Made the manual pretty in HTMLHELP format.

Reorganized and renamed the API chapter.
parent a49a2e20
...@@ -2,3 +2,4 @@ ccarkner@nslinuxw10.bedford.progress.com ...@@ -2,3 +2,4 @@ ccarkner@nslinuxw10.bedford.progress.com
heikki@donna.mysql.fi heikki@donna.mysql.fi
sasha@mysql.sashanet.com sasha@mysql.sashanet.com
monty@donna.mysql.fi monty@donna.mysql.fi
jcole@abel.spaceapes.com
...@@ -771,12 +771,9 @@ The MySQL log files ...@@ -771,12 +771,9 @@ The MySQL log files
* Binary log:: * Binary log::
* Slow query log:: * Slow query log::
MySQL Client Tools and APIs MySQL APIs
* C:: @strong{MySQL} C API * C:: @strong{MySQL} C API
* C API datatypes:: C API datatypes
* C API function overview:: C API function Overview
* C API functions:: C API function descriptions
* Perl:: @strong{MySQL} Perl API * Perl:: @strong{MySQL} Perl API
* Eiffel:: @strong{MySQL} Eiffel wrapper * Eiffel:: @strong{MySQL} Eiffel wrapper
* Java:: @strong{MySQL} Java connectivity (JDBC) * Java:: @strong{MySQL} Java connectivity (JDBC)
...@@ -785,66 +782,6 @@ MySQL Client Tools and APIs ...@@ -785,66 +782,6 @@ MySQL Client Tools and APIs
* Python:: @strong{MySQL} Python APIs * Python:: @strong{MySQL} Python APIs
* Tcl:: @strong{MySQL} Tcl APIs * Tcl:: @strong{MySQL} Tcl APIs
C API Function Descriptions
* mysql_affected_rows:: @code{mysql_affected_rows()}
* mysql_close:: @code{mysql_close()}
* mysql_connect:: @code{mysql_connect()}
* mysql_change_user:: @code{mysql_change_user()}
* mysql_character_set_name:: @code{mysql_character_set_name()}
* mysql_create_db:: @code{mysql_create_db()}
* mysql_data_seek:: @code{mysql_data_seek()}
* mysql_debug:: @code{mysql_debug()}
* mysql_drop_db:: @code{mysql_drop_db()}
* mysql_dump_debug_info:: @code{mysql_dump_debug_info()}
* mysql_eof:: @code{mysql_eof()}
* mysql_errno:: @code{mysql_errno()}
* mysql_error:: @code{mysql_error()}
* mysql_escape_string:: @code{mysql_escape_string()}
* mysql_fetch_field:: @code{mysql_fetch_field()}
* mysql_fetch_fields:: @code{mysql_fetch_fields()}
* mysql_fetch_field_direct:: @code{mysql_fetch_field_direct()}
* mysql_fetch_lengths:: @code{mysql_fetch_lengths()}
* mysql_fetch_row:: @code{mysql_fetch_row()}
* mysql_field_count:: @code{mysql_field_count()}
* mysql_field_seek:: @code{mysql_field_seek()}
* mysql_field_tell:: @code{mysql_field_tell()}
* mysql_free_result:: @code{mysql_free_result()}
* mysql_get_client_info:: @code{mysql_get_client_info()}
* mysql_get_host_info:: @code{mysql_get_host_info()}
* mysql_get_proto_info:: @code{mysql_get_proto_info()}
* mysql_get_server_info:: @code{mysql_get_server_info()}
* mysql_info:: @code{mysql_info()}
* mysql_init:: @code{mysql_init()}
* mysql_insert_id:: @code{mysql_insert_id()}
* mysql_kill:: @code{mysql_kill()}
* mysql_list_dbs:: @code{mysql_list_dbs()}
* mysql_list_fields:: @code{mysql_list_fields()}
* mysql_list_processes:: @code{mysql_list_processes()}
* mysql_list_tables:: @code{mysql_list_tables()}
* mysql_num_fields:: @code{mysql_num_fields()}
* mysql_num_rows:: @code{mysql_num_rows()}
* mysql_options:: @code{mysql_options()}
* mysql_ping:: @code{mysql_ping()}
* mysql_query:: @code{mysql_query()}
* mysql_real_connect:: @code{mysql_real_connect()}
* mysql_real_escape_string:: @code{mysql_real_escape_string()}
* mysql_real_query:: @code{mysql_real_query()}
* mysql_reload:: @code{mysql_reload()}
* mysql_row_seek:: @code{mysql_row_seek()}
* mysql_row_tell:: @code{mysql_row_tell()}
* mysql_select_db:: @code{mysql_select_db()}
* mysql_shutdown:: @code{mysql_shutdown()}
* mysql_stat:: @code{mysql_stat()}
* mysql_store_result:: @code{mysql_store_result()}
* mysql_thread_id:: @code{mysql_thread_id()}
* mysql_use_result:: @code{mysql_use_result()}
* NULL mysql_store_result:: Why is it that after @code{mysql_query()} returns success, @code{mysql_store_result()} sometimes returns @code{NULL?}
* Query results:: What results can I get from a query?
* Getting unique ID:: How can I get the unique ID for the last inserted row?
* C API linking problems:: Problems linking with the C API
* Thread-safe clients:: How to make a thread-safe client
MySQL Perl API MySQL Perl API
* DBI with DBD:: @code{DBI} with @code{DBD::mysql} * DBI with DBD:: @code{DBI} with @code{DBD::mysql}
...@@ -899,7 +836,7 @@ Changes in release 4.0.x (Development; Alpha) ...@@ -899,7 +836,7 @@ Changes in release 4.0.x (Development; Alpha)
Changes in release 3.23.x (Stable) Changes in release 3.23.x (Stable)
* News-3.23.37:: * News-3.23.37:: Changes in release 3.23.37
* News-3.23.36:: Changes in release 3.23.36 * News-3.23.36:: Changes in release 3.23.36
* News-3.23.35:: Changes in release 3.23.35 * News-3.23.35:: Changes in release 3.23.35
* News-3.23.34a:: Changes in release 3.23.34a * News-3.23.34a:: Changes in release 3.23.34a
...@@ -2925,6 +2862,9 @@ There are also many Web pages that use ...@@ -2925,6 +2862,9 @@ There are also many Web pages that use
* Answering questions:: Guidelines for answering questions on the mailing list * Answering questions:: Guidelines for answering questions on the mailing list
@end menu @end menu
This chapter introduces you to the @strong{MySQL} mailing lists, and gives
some guidelines as to how to use them.
@node Mailing-list, Asking questions, Questions, Questions @node Mailing-list, Asking questions, Questions, Questions
@section The MySQL Mailing Lists @section The MySQL Mailing Lists
...@@ -10568,6 +10508,12 @@ information. ...@@ -10568,6 +10508,12 @@ information.
* Commit-rollback:: How to cope without @code{COMMIT}-@code{ROLLBACK} * Commit-rollback:: How to cope without @code{COMMIT}-@code{ROLLBACK}
@end menu @end menu
This chapter describes how @strong{MySQL} relates to the ANSI SQL standards.
@strong{MySQL} has many extensions to the ANSI SQL standards, and here you
will find out what they are, and how to use them. You will also find
information about functionality missing from @strong{MySQL}, and how to work
around some differences.
@node Extensions to ANSI, ANSI mode, Compatibility, Compatibility @node Extensions to ANSI, ANSI mode, Compatibility, Compatibility
@section MySQL Extensions to ANSI SQL92 @section MySQL Extensions to ANSI SQL92
...@@ -13450,7 +13396,7 @@ to restart @code{mysqld} with @code{--skip-grant-tables} to run ...@@ -13450,7 +13396,7 @@ to restart @code{mysqld} with @code{--skip-grant-tables} to run
@chapter MySQL Language Reference @chapter MySQL Language Reference
@menu @menu
* Literals:: Literals: how to write strings and numbers * Literals:: Literals: How to write strings and numbers
* Variables:: User variables * Variables:: User variables
* Column types:: Column types * Column types:: Column types
* Functions:: Functions * Functions:: Functions
...@@ -13475,7 +13421,7 @@ to restart @code{mysqld} with @code{--skip-grant-tables} to run ...@@ -13475,7 +13421,7 @@ to restart @code{mysqld} with @code{--skip-grant-tables} to run
* LOAD DATA:: @code{LOAD DATA INFILE} syntax * LOAD DATA:: @code{LOAD DATA INFILE} syntax
* UPDATE:: @code{UPDATE} syntax * UPDATE:: @code{UPDATE} syntax
* USE:: @code{USE} syntax * USE:: @code{USE} syntax
* FLUSH:: @code{Flush} syntax (clearing caches) * FLUSH:: @code{FLUSH} syntax (clearing caches)
* KILL:: @code{KILL} syntax * KILL:: @code{KILL} syntax
* SHOW:: @code{SHOW} syntax (Get information about tables, columns, ...) * SHOW:: @code{SHOW} syntax (Get information about tables, columns, ...)
* EXPLAIN:: @code{EXPLAIN} syntax (Get information about a @code{SELECT}) * EXPLAIN:: @code{EXPLAIN} syntax (Get information about a @code{SELECT})
...@@ -13492,6 +13438,12 @@ to restart @code{mysqld} with @code{--skip-grant-tables} to run ...@@ -13492,6 +13438,12 @@ to restart @code{mysqld} with @code{--skip-grant-tables} to run
* Reserved words:: Is @strong{MySQL} picky about reserved words? * Reserved words:: Is @strong{MySQL} picky about reserved words?
@end menu @end menu
@strong{MySQL} has a very complex, but intuitive and easy to learn SQL
interface. This chapter describes the various commands, types, and functions
you will need to know in order to use @strong{MySQL} efficiently and
effectively. This chapter also serves as a reference to all functionality
included in MySQL. In order to use this chapter effectively, you may
find it useful to refer to the various indexes.
@cindex strings, defined @cindex strings, defined
@cindex strings, escaping characters @cindex strings, escaping characters
...@@ -13509,6 +13461,10 @@ to restart @code{mysqld} with @code{--skip-grant-tables} to run ...@@ -13509,6 +13461,10 @@ to restart @code{mysqld} with @code{--skip-grant-tables} to run
* Legal names:: Database, Table, Index, Column, and Alias Names * Legal names:: Database, Table, Index, Column, and Alias Names
@end menu @end menu
This section describes the various ways to write strings and numbers in
@strong{MySQL}. It also covers the various nuances and ``gotchas'' that
you may run into when dealing with these basic types in @strong{MySQL}.
@node String syntax, Number syntax, Literals, Literals @node String syntax, Number syntax, Literals, Literals
@subsection Strings @subsection Strings
...@@ -14993,9 +14949,6 @@ Illegal @code{YEAR} values are converted to @code{0000}. ...@@ -14993,9 +14949,6 @@ Illegal @code{YEAR} values are converted to @code{0000}.
@node String types, Choosing types, Date and time types, Column types @node String types, Choosing types, Date and time types, Column types
@subsection String Types @subsection String Types
The string types are @code{CHAR}, @code{VARCHAR}, @code{BLOB}, @code{TEXT},
@code{ENUM}, and @code{SET}.
@tindex CHAR @tindex CHAR
@tindex VARCHAR @tindex VARCHAR
@menu @menu
...@@ -15005,6 +14958,10 @@ The string types are @code{CHAR}, @code{VARCHAR}, @code{BLOB}, @code{TEXT}, ...@@ -15005,6 +14958,10 @@ The string types are @code{CHAR}, @code{VARCHAR}, @code{BLOB}, @code{TEXT},
* SET:: The @code{SET} type * SET:: The @code{SET} type
@end menu @end menu
The string types are @code{CHAR}, @code{VARCHAR}, @code{BLOB}, @code{TEXT},
@code{ENUM}, and @code{SET}. This section describes how these types work,
their storage requirements, and how to use them in your queries.
@node CHAR, BLOB, String types, String types @node CHAR, BLOB, String types, String types
@subsubsection The @code{CHAR} and @code{VARCHAR} Types @subsubsection The @code{CHAR} and @code{VARCHAR} Types
...@@ -24677,7 +24634,7 @@ SELECT article, dealer, price ...@@ -24677,7 +24634,7 @@ SELECT article, dealer, price
FROM shop s1 FROM shop s1
WHERE price=(SELECT MAX(s2.price) WHERE price=(SELECT MAX(s2.price)
FROM shop s2 FROM shop s2
WHERE s1.article = s2.article) WHERE s1.article = s2.article);
@end example @end example
In @strong{MySQL} it's best do it in several steps: In @strong{MySQL} it's best do it in several steps:
...@@ -26544,6 +26501,10 @@ group by ...@@ -26544,6 +26501,10 @@ group by
* Table size:: How big @strong{MySQL} tables can be * Table size:: How big @strong{MySQL} tables can be
@end menu @end menu
This chapter describes the languages @strong{MySQL} supports, how sorting
works in @strong{MySQL}, and how to add new character sets to @strong{MySQL}.
You will also find information about maximum table sizes in this chapter.
@cindex error messages, languages @cindex error messages, languages
@cindex messages, languages @cindex messages, languages
@cindex files, error messages @cindex files, error messages
...@@ -26878,12 +26839,12 @@ limits. Here are some examples: ...@@ -26878,12 +26839,12 @@ limits. Here are some examples:
@multitable @columnfractions .5 .5 @multitable @columnfractions .5 .5
@item @strong{Operating System} @tab @strong{File Size Limit} @item @strong{Operating System} @tab @strong{File Size Limit}
@item Linux-Intel 32 bit@tab 2G, 4G or bigger depending on Linux version @item Linux-Intel 32 bit @tab 2G, 4G or more, depends on Linux version
@item Linux-Alpha @tab 8T (?) @item Linux-Alpha @tab 8T (?)
@item Solaris 2.5.1 @tab 2G (possible 4G with patch) @item Solaris 2.5.1 @tab 2G (possible 4G with patch)
@item Solaris 2.6 @tab 4G @item Solaris 2.6 @tab 4G
@item Solaris 2.7 Intel @tab 4G @item Solaris 2.7 Intel @tab 4G
@item Solaris 2.7 ULTRA-SPARC @tab 8T (?) @item Solaris 2.7 ULTRA-SPARC @tab 8T (?)
@end multitable @end multitable
On Linux 2.2 you can get bigger tables than 2G by using the LFS patch for On Linux 2.2 you can get bigger tables than 2G by using the LFS patch for
...@@ -26922,6 +26883,7 @@ tables}. ...@@ -26922,6 +26883,7 @@ tables}.
@cindex databases, replicating @cindex databases, replicating
@node Replication, Performance, Server, Top @node Replication, Performance, Server, Top
@chapter Replication in MySQL @chapter Replication in MySQL
@menu @menu
* Replication Intro:: Introduction * Replication Intro:: Introduction
* Replication Implementation:: Replication Implementation Overview * Replication Implementation:: Replication Implementation Overview
...@@ -26933,6 +26895,12 @@ tables}. ...@@ -26933,6 +26895,12 @@ tables}.
* Replication Problems:: Troubleshooting Replication. * Replication Problems:: Troubleshooting Replication.
@end menu @end menu
This chapter describes the various replication features in @strong{MySQL}.
It serves as a reference to the options available with replication.
You will be introduced to replication and learn how to implement it.
Towards the end, there are some frequently asked questions and descriptions
of problems and how to solve them.
@node Replication Intro, Replication Implementation, Replication, Replication @node Replication Intro, Replication Implementation, Replication, Replication
@section Introduction @section Introduction
...@@ -30006,6 +29974,10 @@ We can find the result from crash-me on a lot of different databases at ...@@ -30006,6 +29974,10 @@ We can find the result from crash-me on a lot of different databases at
* myisampack:: The @strong{MySQL} compressed read-only table generator * myisampack:: The @strong{MySQL} compressed read-only table generator
@end menu @end menu
In this chapter you will learn about the @strong{MySQL} Utilities that
come in a given distribution. You will learn what each of them does, how
to use it, and what you should use it for.
@cindex environment variables @cindex environment variables
@cindex programs, list of @cindex programs, list of
@node Programs, safe_mysqld, Tools, Tools @node Programs, safe_mysqld, Tools, Tools
...@@ -31713,6 +31685,10 @@ to start using the new table. ...@@ -31713,6 +31685,10 @@ to start using the new table.
* Log file maintenance:: Log file maintenance * Log file maintenance:: Log file maintenance
@end menu @end menu
This chapter covers what you should know about maintaining a @strong{MySQL}
distribution. You will learn how to care for your tables on a regular
basis, and what to do when disaster strikes.
@node Table maintenance, Maintenance regimen, Maintenance, Maintenance @node Table maintenance, Maintenance regimen, Maintenance, Maintenance
@section Using @code{myisamchk} for Table Maintenance and Crash Recovery @section Using @code{myisamchk} for Table Maintenance and Crash Recovery
...@@ -33510,7 +33486,9 @@ You can find all information about procedures by examining the following files: ...@@ -33510,7 +33486,9 @@ You can find all information about procedures by examining the following files:
@end menu @end menu
@strong{MySQL} provides support for ODBC by means of the @strong{MyODBC} @strong{MySQL} provides support for ODBC by means of the @strong{MyODBC}
program. program. This chapter will teach you how to install @strong{MyODBC},
and how to use it. Here, you will also find a list of common programs that
are known to work with @strong{MyODBC}.
@node Installing MyODBC, ODBC administrator, ODBC, ODBC @node Installing MyODBC, ODBC administrator, ODBC, ODBC
@section How To Install MyODBC @section How To Install MyODBC
...@@ -34043,11 +34021,24 @@ likely it is that we can fix the problem! ...@@ -34043,11 +34021,24 @@ likely it is that we can fix the problem!
* Borland C++:: * Borland C++::
@end menu @end menu
This chapter describes how to use @strong{MySQL} with some common programs.
In this chapter you will:
@itemize @bullet
@item
Learn how to easily store your Apache log files in a @strong{MySQL}
database.
@item
Find some tips on how to compile @strong{MySQL} and @strong{MySQL}-based
programs using Borland C++.
@end itemize
@cindex Apache @cindex Apache
@node Apache, Borland C++, Common programs, Common programs @node Apache, Borland C++, Common programs, Common programs
@section Using MySQL with Apache @section Using MySQL with Apache
The contrib section includes programs that let you authenticate your The Contrib section includes programs that let you authenticate your
users from a @strong{MySQL} database and also let you log your log files users from a @strong{MySQL} database and also let you log your log files
into a @strong{MySQL} table. @xref{Contrib}. into a @strong{MySQL} table. @xref{Contrib}.
...@@ -34119,6 +34110,11 @@ pre-allocated MYSQL struct. ...@@ -34119,6 +34110,11 @@ pre-allocated MYSQL struct.
* Change column order:: How to change the order of columns in a table * Change column order:: How to change the order of columns in a table
@end menu @end menu
This chapter lists some common problems and error messages that users have
run into. You will learn how to figure out what the problem is, and what
to do to solve it. You will also find proper solutions to some common
problems.
@node What is crashing, Crashing, Problems, Problems @node What is crashing, Crashing, Problems, Problems
@section How to Determine What Is Causing Problems @section How to Determine What Is Causing Problems
...@@ -34484,6 +34480,9 @@ sure that no other programs are using the dynamic libraries! ...@@ -34484,6 +34480,9 @@ sure that no other programs are using the dynamic libraries!
* Cannot initialize character set:: * Cannot initialize character set::
@end menu @end menu
This section lists some errors that users frequently get. You will find
descriptions of the errors, and how to solve the problem here.
@cindex errors, access denied @cindex errors, access denied
@cindex problems, access denied errors @cindex problems, access denied errors
@cindex access denied errors @cindex access denied errors
...@@ -35705,13 +35704,19 @@ Drop or rename @code{old_table}. ...@@ -35705,13 +35704,19 @@ Drop or rename @code{old_table}.
* Multiple servers:: Running multiple @strong{MySQL} servers on the same machine * Multiple servers:: Running multiple @strong{MySQL} servers on the same machine
@end menu @end menu
In this chapter, you will find information to solve some of the more common
tasks with @strong{MySQL}. This includes making backups, running more than
one @strong{MySQL} server daemon on a single machine, and replicating a
database using the update or binary logs.
@cindex database replication @cindex database replication
@cindex replication, database @cindex replication, database
@node Log Replication, Backup, Common problems, Common problems @node Log Replication, Backup, Common problems, Common problems
@section Database Replication with Update Log @section Database Replication with Update Log
Now that master-slave internal replication is available starting in Now that master-slave internal replication is available starting in
Version 3.23.15, this is the recommended way. @xref{Replication}. Version 3.23.15, using the update log to implement replications is not
recommended. @xref{Replication}.
However, it is still possible to replicate a database by using the However, it is still possible to replicate a database by using the
update log or the binary log. @xref{Update log}. This requires one update log or the binary log. @xref{Update log}. This requires one
...@@ -36208,13 +36213,10 @@ to the master database. @xref{Log Replication}. ...@@ -36208,13 +36213,10 @@ to the master database. @xref{Log Replication}.
@cindex buffer sizes, client @cindex buffer sizes, client
@cindex library, @code{mysqlclient} @cindex library, @code{mysqlclient}
@node Clients, Comparisons, Log files, Top @node Clients, Comparisons, Log files, Top
@chapter MySQL Client Tools and APIs @chapter MySQL APIs
@menu @menu
* C:: @strong{MySQL} C API * C:: @strong{MySQL} C API
* C API datatypes:: C API datatypes
* C API function overview:: C API function Overview
* C API functions:: C API function descriptions
* Perl:: @strong{MySQL} Perl API * Perl:: @strong{MySQL} Perl API
* Eiffel:: @strong{MySQL} Eiffel wrapper * Eiffel:: @strong{MySQL} Eiffel wrapper
* Java:: @strong{MySQL} Java connectivity (JDBC) * Java:: @strong{MySQL} Java connectivity (JDBC)
...@@ -36224,11 +36226,22 @@ to the master database. @xref{Log Replication}. ...@@ -36224,11 +36226,22 @@ to the master database. @xref{Log Replication}.
* Tcl:: @strong{MySQL} Tcl APIs * Tcl:: @strong{MySQL} Tcl APIs
@end menu @end menu
This chapter describes the APIs available for @strong{MySQL}, where to get
them, and how to use them. The C API is the most extensively covered, as it
was developed by the @strong{MySQL} team, and is the basis for most of the
other APIs.
@cindex C API, datatypes @cindex C API, datatypes
@cindex datatypes, C API @cindex datatypes, C API
@node C, C API datatypes, Clients, Clients @node C, C API datatypes, Clients, Clients
@section MySQL C API @section MySQL C API
@menu
* C API datatypes:: C API Datatypes
* C API function overview:: C API Function Overview
* C API functions:: C API Function Descriptions
@end menu
The C API code is distributed with @strong{MySQL}. It is included in the The C API code is distributed with @strong{MySQL}. It is included in the
@code{mysqlclient} library and allows C programs to access a database. @code{mysqlclient} library and allows C programs to access a database.
...@@ -36269,8 +36282,8 @@ is closed, at which time client memory is reclaimed. ...@@ -36269,8 +36282,8 @@ is closed, at which time client memory is reclaimed.
For programming with threads, consult the 'how to make a thread-safe For programming with threads, consult the 'how to make a thread-safe
client' chapter. @xref{Thread-safe clients}. client' chapter. @xref{Thread-safe clients}.
@node C API datatypes, C API function overview, C, Clients @node C API datatypes, C API function overview, C, C
@section C API Datatypes @subsection C API Datatypes
@table @code @table @code
@tindex MYSQL C type @tindex MYSQL C type
...@@ -36433,8 +36446,8 @@ The number of decimals for numeric fields. ...@@ -36433,8 +36446,8 @@ The number of decimals for numeric fields.
@cindex C API, functions @cindex C API, functions
@cindex functions, C API @cindex functions, C API
@node C API function overview, C API functions, C API datatypes, Clients @node C API function overview, C API functions, C API datatypes, C
@section C API Function Overview @subsection C API Function Overview
The functions available in the C API are listed below and are described in The functions available in the C API are listed below and are described in
greater detail in the next section. greater detail in the next section.
...@@ -36455,7 +36468,7 @@ Connects to a @strong{MySQL} server. This function is deprecated; use ...@@ -36455,7 +36468,7 @@ Connects to a @strong{MySQL} server. This function is deprecated; use
@item @strong{mysql_change_user()} @tab @item @strong{mysql_change_user()} @tab
Changes user and database on an open connection. Changes user and database on an open connection.
@item @code{mysql_character_set_name()} @tab @item @strong{mysql_character_set_name()} @tab
Returns the name of the default character set for the connection. Returns the name of the default character set for the connection.
@item @strong{mysql_create_db()} @tab @item @strong{mysql_create_db()} @tab
...@@ -36711,8 +36724,8 @@ functions. These return the error code or error message for the most ...@@ -36711,8 +36724,8 @@ functions. These return the error code or error message for the most
recently invoked function that can succeed or fail, allowing you to determine recently invoked function that can succeed or fail, allowing you to determine
when an error occurred and what it was. when an error occurred and what it was.
@node C API functions, Perl, C API function overview, Clients @node C API functions, Perl, C API function overview, C
@section C API Function Descriptions @subsection C API Function Descriptions
@menu @menu
* mysql_affected_rows:: @code{mysql_affected_rows()} * mysql_affected_rows:: @code{mysql_affected_rows()}
...@@ -36805,7 +36818,7 @@ A string representation of the error may be obtained by calling ...@@ -36805,7 +36818,7 @@ A string representation of the error may be obtained by calling
@findex @code{mysql_affected_rows()} @findex @code{mysql_affected_rows()}
@node mysql_affected_rows, mysql_close, C API functions, C API functions @node mysql_affected_rows, mysql_close, C API functions, C API functions
@subsection @code{mysql_affected_rows()} @subsubsection @code{mysql_affected_rows()}
@code{my_ulonglong mysql_affected_rows(MYSQL *mysql)} @code{my_ulonglong mysql_affected_rows(MYSQL *mysql)}
...@@ -36841,7 +36854,7 @@ printf("%d products updated",mysql_affected_rows(&mysql)); ...@@ -36841,7 +36854,7 @@ printf("%d products updated",mysql_affected_rows(&mysql));
@findex @code{mysql_close()} @findex @code{mysql_close()}
@node mysql_close, mysql_connect, mysql_affected_rows, C API functions @node mysql_close, mysql_connect, mysql_affected_rows, C API functions
@subsection @code{mysql_close()} @subsubsection @code{mysql_close()}
@code{void mysql_close(MYSQL *mysql)} @code{void mysql_close(MYSQL *mysql)}
...@@ -36860,7 +36873,7 @@ None. ...@@ -36860,7 +36873,7 @@ None.
@findex @code{mysql_connect()} @findex @code{mysql_connect()}
@node mysql_connect, mysql_change_user, mysql_close, C API functions @node mysql_connect, mysql_change_user, mysql_close, C API functions
@subsection @code{mysql_connect()} @subsubsection @code{mysql_connect()}
@code{MYSQL *mysql_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd)} @code{MYSQL *mysql_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd)}
...@@ -36893,7 +36906,7 @@ Same as for @code{mysql_real_connect()}. ...@@ -36893,7 +36906,7 @@ Same as for @code{mysql_real_connect()}.
@findex @code{mysql_change_user()} @findex @code{mysql_change_user()}
@node mysql_change_user, mysql_character_set_name, mysql_connect, C API functions @node mysql_change_user, mysql_character_set_name, mysql_connect, C API functions
@subsection @code{mysql_change_user()} @subsubsection @code{mysql_change_user()}
@code{my_bool mysql_change_user(MYSQL *mysql, const char *user, const @code{my_bool mysql_change_user(MYSQL *mysql, const char *user, const
char *password, const char *db)} char *password, const char *db)}
...@@ -36955,7 +36968,7 @@ if (mysql_change_user(&mysql, "user", "password", "new_database")) ...@@ -36955,7 +36968,7 @@ if (mysql_change_user(&mysql, "user", "password", "new_database"))
@findex @code{mysql_character_set_name()} @findex @code{mysql_character_set_name()}
@node mysql_character_set_name, mysql_create_db, mysql_change_user, C API functions @node mysql_character_set_name, mysql_create_db, mysql_change_user, C API functions
@subsection @code{mysql_character_set_name()} @subsubsection @code{mysql_character_set_name()}
@code{const char *mysql_character_set_name(MYSQL *mysql)} @code{const char *mysql_character_set_name(MYSQL *mysql)}
...@@ -36973,7 +36986,7 @@ None. ...@@ -36973,7 +36986,7 @@ None.
@findex @code{mysql_create_db()} @findex @code{mysql_create_db()}
@node mysql_create_db, mysql_data_seek, mysql_character_set_name, C API functions @node mysql_create_db, mysql_data_seek, mysql_character_set_name, C API functions
@subsection @code{mysql_create_db()} @subsubsection @code{mysql_create_db()}
@code{int mysql_create_db(MYSQL *mysql, const char *db)} @code{int mysql_create_db(MYSQL *mysql, const char *db)}
...@@ -37016,7 +37029,7 @@ if(mysql_create_db(&mysql, "my_database")) ...@@ -37016,7 +37029,7 @@ if(mysql_create_db(&mysql, "my_database"))
@findex @code{mysql_data_seek()} @findex @code{mysql_data_seek()}
@node mysql_data_seek, mysql_debug, mysql_create_db, C API functions @node mysql_data_seek, mysql_debug, mysql_create_db, C API functions
@subsection @code{mysql_data_seek()} @subsubsection @code{mysql_data_seek()}
@code{void mysql_data_seek(MYSQL_RES *result, unsigned long long offset)} @code{void mysql_data_seek(MYSQL_RES *result, unsigned long long offset)}
...@@ -37038,7 +37051,7 @@ None. ...@@ -37038,7 +37051,7 @@ None.
@findex @code{mysql_debug()} @findex @code{mysql_debug()}
@node mysql_debug, mysql_drop_db, mysql_data_seek, C API functions @node mysql_debug, mysql_drop_db, mysql_data_seek, C API functions
@subsection @code{mysql_debug()} @subsubsection @code{mysql_debug()}
@code{void mysql_debug(char *debug)} @code{void mysql_debug(char *debug)}
...@@ -37066,7 +37079,7 @@ mysql_debug("d:t:O,/tmp/client.trace"); ...@@ -37066,7 +37079,7 @@ mysql_debug("d:t:O,/tmp/client.trace");
@findex @code{mysql_drop_db()} @findex @code{mysql_drop_db()}
@node mysql_drop_db, mysql_dump_debug_info, mysql_debug, C API functions @node mysql_drop_db, mysql_dump_debug_info, mysql_debug, C API functions
@subsection @code{mysql_drop_db()} @subsubsection @code{mysql_drop_db()}
@code{int mysql_drop_db(MYSQL *mysql, const char *db)} @code{int mysql_drop_db(MYSQL *mysql, const char *db)}
...@@ -37104,7 +37117,7 @@ if(mysql_drop_db(&mysql, "my_database")) ...@@ -37104,7 +37117,7 @@ if(mysql_drop_db(&mysql, "my_database"))
@findex @code{mysql_dump_debug_info()} @findex @code{mysql_dump_debug_info()}
@node mysql_dump_debug_info, mysql_eof, mysql_drop_db, C API functions @node mysql_dump_debug_info, mysql_eof, mysql_drop_db, C API functions
@subsection @code{mysql_dump_debug_info()} @subsubsection @code{mysql_dump_debug_info()}
@code{int mysql_dump_debug_info(MYSQL *mysql)} @code{int mysql_dump_debug_info(MYSQL *mysql)}
...@@ -37131,7 +37144,7 @@ An unknown error occurred. ...@@ -37131,7 +37144,7 @@ An unknown error occurred.
@findex @code{mysql_eof()} @findex @code{mysql_eof()}
@node mysql_eof, mysql_errno, mysql_dump_debug_info, C API functions @node mysql_eof, mysql_errno, mysql_dump_debug_info, C API functions
@subsection @code{mysql_eof()} @subsubsection @code{mysql_eof()}
@code{my_bool mysql_eof(MYSQL_RES *result)} @code{my_bool mysql_eof(MYSQL_RES *result)}
...@@ -37208,7 +37221,7 @@ if(mysql_errno(&mysql)) // mysql_fetch_row() failed due to an error ...@@ -37208,7 +37221,7 @@ if(mysql_errno(&mysql)) // mysql_fetch_row() failed due to an error
@findex @code{mysql_errno()} @findex @code{mysql_errno()}
@node mysql_errno, mysql_error, mysql_eof, C API functions @node mysql_errno, mysql_error, mysql_eof, C API functions
@subsection @code{mysql_errno()} @subsubsection @code{mysql_errno()}
@code{unsigned int mysql_errno(MYSQL *mysql)} @code{unsigned int mysql_errno(MYSQL *mysql)}
...@@ -37231,7 +37244,7 @@ None. ...@@ -37231,7 +37244,7 @@ None.
@findex @code{mysql_error()} @findex @code{mysql_error()}
@node mysql_error, mysql_escape_string, mysql_errno, C API functions @node mysql_error, mysql_escape_string, mysql_errno, C API functions
@subsection @code{mysql_error()} @subsubsection @code{mysql_error()}
@code{char *mysql_error(MYSQL *mysql)} @code{char *mysql_error(MYSQL *mysql)}
...@@ -37269,7 +37282,7 @@ None. ...@@ -37269,7 +37282,7 @@ None.
@findex @code{mysql_escape_string()} @findex @code{mysql_escape_string()}
@node mysql_escape_string, mysql_fetch_field, mysql_error, C API functions @node mysql_escape_string, mysql_fetch_field, mysql_error, C API functions
@subsection @code{mysql_escape_string()} @subsubsection @code{mysql_escape_string()}
You should use @code{mysql_real_escape_string()} instead! You should use @code{mysql_real_escape_string()} instead!
...@@ -37282,7 +37295,7 @@ setting. ...@@ -37282,7 +37295,7 @@ setting.
@findex @code{mysql_fetch_field()} @findex @code{mysql_fetch_field()}
@node mysql_fetch_field, mysql_fetch_fields, mysql_escape_string, C API functions @node mysql_fetch_field, mysql_fetch_fields, mysql_escape_string, C API functions
@subsection @code{mysql_fetch_field()} @subsubsection @code{mysql_fetch_field()}
@code{MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)} @code{MYSQL_FIELD *mysql_fetch_field(MYSQL_RES *result)}
...@@ -37328,7 +37341,7 @@ while((field = mysql_fetch_field(result))) ...@@ -37328,7 +37341,7 @@ while((field = mysql_fetch_field(result)))
@findex @code{mysql_fetch_fields()} @findex @code{mysql_fetch_fields()}
@node mysql_fetch_fields, mysql_fetch_field_direct, mysql_fetch_field, C API functions @node mysql_fetch_fields, mysql_fetch_field_direct, mysql_fetch_field, C API functions
@subsection @code{mysql_fetch_fields()} @subsubsection @code{mysql_fetch_fields()}
@code{MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result)} @code{MYSQL_FIELD *mysql_fetch_fields(MYSQL_RES *result)}
...@@ -37362,7 +37375,7 @@ for(i = 0; i < num_fields; i++) ...@@ -37362,7 +37375,7 @@ for(i = 0; i < num_fields; i++)
@findex @code{mysql_fetch_field_direct()} @findex @code{mysql_fetch_field_direct()}
@node mysql_fetch_field_direct, mysql_fetch_lengths, mysql_fetch_fields, C API functions @node mysql_fetch_field_direct, mysql_fetch_lengths, mysql_fetch_fields, C API functions
@subsection @code{mysql_fetch_field_direct()} @subsubsection @code{mysql_fetch_field_direct()}
@code{MYSQL_FIELD *mysql_fetch_field_direct(MYSQL_RES *result, unsigned int fieldnr)} @code{MYSQL_FIELD *mysql_fetch_field_direct(MYSQL_RES *result, unsigned int fieldnr)}
...@@ -37398,7 +37411,7 @@ for(i = 0; i < num_fields; i++) ...@@ -37398,7 +37411,7 @@ for(i = 0; i < num_fields; i++)
@findex @code{mysql_fetch_lengths()} @findex @code{mysql_fetch_lengths()}
@node mysql_fetch_lengths, mysql_fetch_row, mysql_fetch_field_direct, C API functions @node mysql_fetch_lengths, mysql_fetch_row, mysql_fetch_field_direct, C API functions
@subsection @code{mysql_fetch_lengths()} @subsubsection @code{mysql_fetch_lengths()}
@code{unsigned long *mysql_fetch_lengths(MYSQL_RES *result)} @code{unsigned long *mysql_fetch_lengths(MYSQL_RES *result)}
...@@ -37448,7 +37461,7 @@ if (row) ...@@ -37448,7 +37461,7 @@ if (row)
@findex @code{mysql_fetch_row()} @findex @code{mysql_fetch_row()}
@node mysql_fetch_row, mysql_field_count, mysql_fetch_lengths, C API functions @node mysql_fetch_row, mysql_field_count, mysql_fetch_lengths, C API functions
@subsection @code{mysql_fetch_row()} @subsubsection @code{mysql_fetch_row()}
@code{MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)} @code{MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)}
...@@ -37508,7 +37521,7 @@ while ((row = mysql_fetch_row(result))) ...@@ -37508,7 +37521,7 @@ while ((row = mysql_fetch_row(result)))
@findex @code{mysql_field_count()} @findex @code{mysql_field_count()}
@node mysql_field_count, mysql_field_seek, mysql_fetch_row, C API functions @node mysql_field_count, mysql_field_seek, mysql_fetch_row, C API functions
@subsection @code{mysql_field_count()} @subsubsection @code{mysql_field_count()}
@code{unsigned int mysql_field_count(MYSQL *mysql)} @code{unsigned int mysql_field_count(MYSQL *mysql)}
...@@ -37580,7 +37593,7 @@ of @code{mysql_field_count()} whether or not the statement was a ...@@ -37580,7 +37593,7 @@ of @code{mysql_field_count()} whether or not the statement was a
@findex @code{mysql_field_seek()} @findex @code{mysql_field_seek()}
@node mysql_field_seek, mysql_field_tell, mysql_field_count, C API functions @node mysql_field_seek, mysql_field_tell, mysql_field_count, C API functions
@subsection @code{mysql_field_seek()} @subsubsection @code{mysql_field_seek()}
@code{MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)} @code{MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES *result, MYSQL_FIELD_OFFSET offset)}
...@@ -37601,7 +37614,7 @@ None. ...@@ -37601,7 +37614,7 @@ None.
@findex @code{mysql_field_tell()} @findex @code{mysql_field_tell()}
@node mysql_field_tell, mysql_free_result, mysql_field_seek, C API functions @node mysql_field_tell, mysql_free_result, mysql_field_seek, C API functions
@subsection @code{mysql_field_tell()} @subsubsection @code{mysql_field_tell()}
@code{MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES *result)} @code{MYSQL_FIELD_OFFSET mysql_field_tell(MYSQL_RES *result)}
...@@ -37620,7 +37633,7 @@ None. ...@@ -37620,7 +37633,7 @@ None.
@findex @code{mysql_free_result()} @findex @code{mysql_free_result()}
@node mysql_free_result, mysql_get_client_info, mysql_field_tell, C API functions @node mysql_free_result, mysql_get_client_info, mysql_field_tell, C API functions
@subsection @code{mysql_free_result()} @subsubsection @code{mysql_free_result()}
@code{void mysql_free_result(MYSQL_RES *result)} @code{void mysql_free_result(MYSQL_RES *result)}
...@@ -37640,7 +37653,7 @@ None. ...@@ -37640,7 +37653,7 @@ None.
@findex @code{mysql_get_client_info()} @findex @code{mysql_get_client_info()}
@node mysql_get_client_info, mysql_get_host_info, mysql_free_result, C API functions @node mysql_get_client_info, mysql_get_host_info, mysql_free_result, C API functions
@subsection @code{mysql_get_client_info()} @subsubsection @code{mysql_get_client_info()}
@code{char *mysql_get_client_info(void)} @code{char *mysql_get_client_info(void)}
...@@ -37657,7 +37670,7 @@ None. ...@@ -37657,7 +37670,7 @@ None.
@findex @code{mysql_get_host_info()} @findex @code{mysql_get_host_info()}
@node mysql_get_host_info, mysql_get_proto_info, mysql_get_client_info, C API functions @node mysql_get_host_info, mysql_get_proto_info, mysql_get_client_info, C API functions
@subsection @code{mysql_get_host_info()} @subsubsection @code{mysql_get_host_info()}
@code{char *mysql_get_host_info(MYSQL *mysql)} @code{char *mysql_get_host_info(MYSQL *mysql)}
...@@ -37675,7 +37688,7 @@ None. ...@@ -37675,7 +37688,7 @@ None.
@findex @code{mysql_get_proto_info()} @findex @code{mysql_get_proto_info()}
@node mysql_get_proto_info, mysql_get_server_info, mysql_get_host_info, C API functions @node mysql_get_proto_info, mysql_get_server_info, mysql_get_host_info, C API functions
@subsection @code{mysql_get_proto_info()} @subsubsection @code{mysql_get_proto_info()}
@code{unsigned int mysql_get_proto_info(MYSQL *mysql)} @code{unsigned int mysql_get_proto_info(MYSQL *mysql)}
...@@ -37693,7 +37706,7 @@ None. ...@@ -37693,7 +37706,7 @@ None.
@findex @code{mysql_get_server_info()} @findex @code{mysql_get_server_info()}
@node mysql_get_server_info, mysql_info, mysql_get_proto_info, C API functions @node mysql_get_server_info, mysql_info, mysql_get_proto_info, C API functions
@subsection @code{mysql_get_server_info()} @subsubsection @code{mysql_get_server_info()}
@code{char *mysql_get_server_info(MYSQL *mysql)} @code{char *mysql_get_server_info(MYSQL *mysql)}
...@@ -37710,7 +37723,7 @@ None. ...@@ -37710,7 +37723,7 @@ None.
@findex @code{mysql_info()} @findex @code{mysql_info()}
@node mysql_info, mysql_init, mysql_get_server_info, C API functions @node mysql_info, mysql_init, mysql_get_server_info, C API functions
@subsection @code{mysql_info()} @subsubsection @code{mysql_info()}
@code{char *mysql_info(MYSQL *mysql)} @code{char *mysql_info(MYSQL *mysql)}
...@@ -37750,7 +37763,7 @@ None. ...@@ -37750,7 +37763,7 @@ None.
@findex @code{mysql_init()} @findex @code{mysql_init()}
@node mysql_init, mysql_insert_id, mysql_info, C API functions @node mysql_init, mysql_insert_id, mysql_info, C API functions
@subsection @code{mysql_init()} @subsubsection @code{mysql_init()}
@code{MYSQL *mysql_init(MYSQL *mysql)} @code{MYSQL *mysql_init(MYSQL *mysql)}
...@@ -37773,7 +37786,7 @@ In case of insufficient memory, @code{NULL} is returned. ...@@ -37773,7 +37786,7 @@ In case of insufficient memory, @code{NULL} is returned.
@findex @code{mysql_insert_id()} @findex @code{mysql_insert_id()}
@node mysql_insert_id, mysql_kill, mysql_init, C API functions @node mysql_insert_id, mysql_kill, mysql_init, C API functions
@subsection @code{mysql_insert_id()} @subsubsection @code{mysql_insert_id()}
@code{my_ulonglong mysql_insert_id(MYSQL *mysql)} @code{my_ulonglong mysql_insert_id(MYSQL *mysql)}
...@@ -37804,7 +37817,7 @@ None. ...@@ -37804,7 +37817,7 @@ None.
@findex @code{mysql_kill()} @findex @code{mysql_kill()}
@node mysql_kill, mysql_list_dbs, mysql_insert_id, C API functions @node mysql_kill, mysql_list_dbs, mysql_insert_id, C API functions
@subsection @code{mysql_kill()} @subsubsection @code{mysql_kill()}
@code{int mysql_kill(MYSQL *mysql, unsigned long pid)} @code{int mysql_kill(MYSQL *mysql, unsigned long pid)}
...@@ -37831,7 +37844,7 @@ An unknown error occurred. ...@@ -37831,7 +37844,7 @@ An unknown error occurred.
@findex @code{mysql_list_dbs()} @findex @code{mysql_list_dbs()}
@node mysql_list_dbs, mysql_list_fields, mysql_kill, C API functions @node mysql_list_dbs, mysql_list_fields, mysql_kill, C API functions
@subsection @code{mysql_list_dbs()} @subsubsection @code{mysql_list_dbs()}
@code{MYSQL_RES *mysql_list_dbs(MYSQL *mysql, const char *wild)} @code{MYSQL_RES *mysql_list_dbs(MYSQL *mysql, const char *wild)}
...@@ -37867,7 +37880,7 @@ An unknown error occurred. ...@@ -37867,7 +37880,7 @@ An unknown error occurred.
@findex @code{mysql_list_fields()} @findex @code{mysql_list_fields()}
@node mysql_list_fields, mysql_list_processes, mysql_list_dbs, C API functions @node mysql_list_fields, mysql_list_processes, mysql_list_dbs, C API functions
@subsection @code{mysql_list_fields()} @subsubsection @code{mysql_list_fields()}
@code{MYSQL_RES *mysql_list_fields(MYSQL *mysql, const char *table, const char *wild)} @code{MYSQL_RES *mysql_list_fields(MYSQL *mysql, const char *table, const char *wild)}
...@@ -37904,7 +37917,7 @@ An unknown error occurred. ...@@ -37904,7 +37917,7 @@ An unknown error occurred.
@findex @code{mysql_list_processes()} @findex @code{mysql_list_processes()}
@node mysql_list_processes, mysql_list_tables, mysql_list_fields, C API functions @node mysql_list_processes, mysql_list_tables, mysql_list_fields, C API functions
@subsection @code{mysql_list_processes()} @subsubsection @code{mysql_list_processes()}
@code{MYSQL_RES *mysql_list_processes(MYSQL *mysql)} @code{MYSQL_RES *mysql_list_processes(MYSQL *mysql)}
...@@ -37935,7 +37948,7 @@ An unknown error occurred. ...@@ -37935,7 +37948,7 @@ An unknown error occurred.
@findex @code{mysql_list_tables()} @findex @code{mysql_list_tables()}
@node mysql_list_tables, mysql_num_fields, mysql_list_processes, C API functions @node mysql_list_tables, mysql_num_fields, mysql_list_processes, C API functions
@subsection @code{mysql_list_tables()} @subsubsection @code{mysql_list_tables()}
@code{MYSQL_RES *mysql_list_tables(MYSQL *mysql, const char *wild)} @code{MYSQL_RES *mysql_list_tables(MYSQL *mysql, const char *wild)}
...@@ -37970,7 +37983,7 @@ An unknown error occurred. ...@@ -37970,7 +37983,7 @@ An unknown error occurred.
@findex @code{mysql_num_fields()} @findex @code{mysql_num_fields()}
@findex @code{mysql_field_count()} @findex @code{mysql_field_count()}
@node mysql_num_fields, mysql_num_rows, mysql_list_tables, C API functions @node mysql_num_fields, mysql_num_rows, mysql_list_tables, C API functions
@subsection @code{mysql_num_fields()} @subsubsection @code{mysql_num_fields()}
@code{unsigned int mysql_num_fields(MYSQL_RES *result)} @code{unsigned int mysql_num_fields(MYSQL_RES *result)}
...@@ -38047,7 +38060,7 @@ went wrong. ...@@ -38047,7 +38060,7 @@ went wrong.
@findex @code{mysql_num_rows()} @findex @code{mysql_num_rows()}
@node mysql_num_rows, mysql_options, mysql_num_fields, C API functions @node mysql_num_rows, mysql_options, mysql_num_fields, C API functions
@subsection @code{mysql_num_rows()} @subsubsection @code{mysql_num_rows()}
@code{my_ulonglong mysql_num_rows(MYSQL_RES *result)} @code{my_ulonglong mysql_num_rows(MYSQL_RES *result)}
...@@ -38071,7 +38084,7 @@ None. ...@@ -38071,7 +38084,7 @@ None.
@findex @code{mysql_options()} @findex @code{mysql_options()}
@node mysql_options, mysql_ping, mysql_num_rows, C API functions @node mysql_options, mysql_ping, mysql_num_rows, C API functions
@subsection @code{mysql_options()} @subsubsection @code{mysql_options()}
@code{int mysql_options(MYSQL *mysql, enum mysql_option option, const char *arg)} @code{int mysql_options(MYSQL *mysql, enum mysql_option option, const char *arg)}
...@@ -38151,7 +38164,7 @@ file. ...@@ -38151,7 +38164,7 @@ file.
@findex @code{mysql_ping()} @findex @code{mysql_ping()}
@node mysql_ping, mysql_query, mysql_options, C API functions @node mysql_ping, mysql_query, mysql_options, C API functions
@subsection @code{mysql_ping()} @subsubsection @code{mysql_ping()}
@code{int mysql_ping(MYSQL *mysql)} @code{int mysql_ping(MYSQL *mysql)}
...@@ -38181,7 +38194,7 @@ An unknown error occurred. ...@@ -38181,7 +38194,7 @@ An unknown error occurred.
@findex @code{mysql_query()} @findex @code{mysql_query()}
@node mysql_query, mysql_real_connect, mysql_ping, C API functions @node mysql_query, mysql_real_connect, mysql_ping, C API functions
@subsection @code{mysql_query()} @subsubsection @code{mysql_query()}
@code{int mysql_query(MYSQL *mysql, const char *query)} @code{int mysql_query(MYSQL *mysql, const char *query)}
...@@ -38218,7 +38231,7 @@ An unknown error occurred. ...@@ -38218,7 +38231,7 @@ An unknown error occurred.
@findex @code{mysql_real_connect()} @findex @code{mysql_real_connect()}
@node mysql_real_connect, mysql_real_escape_string, mysql_query, C API functions @node mysql_real_connect, mysql_real_escape_string, mysql_query, C API functions
@subsection @code{mysql_real_connect()} @subsubsection @code{mysql_real_connect()}
@code{MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, @code{MYSQL *mysql_real_connect(MYSQL *mysql, const char *host,
const char *user, const char *passwd, const char *db, const char *user, const char *passwd, const char *db,
...@@ -38376,7 +38389,7 @@ try reconnecting to the server before giving up. ...@@ -38376,7 +38389,7 @@ try reconnecting to the server before giving up.
@findex @code{mysql_real_escape_string()} @findex @code{mysql_real_escape_string()}
@node mysql_real_escape_string, mysql_real_query, mysql_real_connect, C API functions @node mysql_real_escape_string, mysql_real_query, mysql_real_connect, C API functions
@subsection @code{mysql_real_escape_string()} @subsubsection @code{mysql_real_escape_string()}
@code{unsigned int mysql_real_escape_string(MYSQL *mysql, char *to, const char *from, unsigned int length)} @code{unsigned int mysql_real_escape_string(MYSQL *mysql, char *to, const char *from, unsigned int length)}
...@@ -38435,7 +38448,7 @@ None. ...@@ -38435,7 +38448,7 @@ None.
@findex @code{mysql_real_query()} @findex @code{mysql_real_query()}
@node mysql_real_query, mysql_reload, mysql_real_escape_string, C API functions @node mysql_real_query, mysql_reload, mysql_real_escape_string, C API functions
@subsection @code{mysql_real_query()} @subsubsection @code{mysql_real_query()}
@code{int mysql_real_query(MYSQL *mysql, const char *query, unsigned int length)} @code{int mysql_real_query(MYSQL *mysql, const char *query, unsigned int length)}
...@@ -38475,7 +38488,7 @@ An unknown error occurred. ...@@ -38475,7 +38488,7 @@ An unknown error occurred.
@findex @code{mysql_reload()} @findex @code{mysql_reload()}
@node mysql_reload, mysql_row_seek, mysql_real_query, C API functions @node mysql_reload, mysql_row_seek, mysql_real_query, C API functions
@subsection @code{mysql_reload()} @subsubsection @code{mysql_reload()}
@code{int mysql_reload(MYSQL *mysql)} @code{int mysql_reload(MYSQL *mysql)}
...@@ -38506,7 +38519,7 @@ An unknown error occurred. ...@@ -38506,7 +38519,7 @@ An unknown error occurred.
@findex @code{mysql_row_seek()} @findex @code{mysql_row_seek()}
@node mysql_row_seek, mysql_row_tell, mysql_reload, C API functions @node mysql_row_seek, mysql_row_tell, mysql_reload, C API functions
@subsection @code{mysql_row_seek()} @subsubsection @code{mysql_row_seek()}
@code{MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET offset)} @code{MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES *result, MYSQL_ROW_OFFSET offset)}
...@@ -38531,7 +38544,7 @@ None. ...@@ -38531,7 +38544,7 @@ None.
@findex @code{mysql_row_tell()} @findex @code{mysql_row_tell()}
@node mysql_row_tell, mysql_select_db, mysql_row_seek, C API functions @node mysql_row_tell, mysql_select_db, mysql_row_seek, C API functions
@subsection @code{mysql_row_tell()} @subsubsection @code{mysql_row_tell()}
@code{MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *result)} @code{MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES *result)}
...@@ -38553,7 +38566,7 @@ None. ...@@ -38553,7 +38566,7 @@ None.
@findex @code{mysql_select_db()} @findex @code{mysql_select_db()}
@node mysql_select_db, mysql_shutdown, mysql_row_tell, C API functions @node mysql_select_db, mysql_shutdown, mysql_row_tell, C API functions
@subsection @code{mysql_select_db()} @subsubsection @code{mysql_select_db()}
@code{int mysql_select_db(MYSQL *mysql, const char *db)} @code{int mysql_select_db(MYSQL *mysql, const char *db)}
...@@ -38586,7 +38599,7 @@ An unknown error occurred. ...@@ -38586,7 +38599,7 @@ An unknown error occurred.
@findex @code{mysql_shutdown()} @findex @code{mysql_shutdown()}
@node mysql_shutdown, mysql_stat, mysql_select_db, C API functions @node mysql_shutdown, mysql_stat, mysql_select_db, C API functions
@subsection @code{mysql_shutdown()} @subsubsection @code{mysql_shutdown()}
@code{int mysql_shutdown(MYSQL *mysql)} @code{int mysql_shutdown(MYSQL *mysql)}
...@@ -38614,7 +38627,7 @@ An unknown error occurred. ...@@ -38614,7 +38627,7 @@ An unknown error occurred.
@findex @code{mysql_stat()} @findex @code{mysql_stat()}
@node mysql_stat, mysql_store_result, mysql_shutdown, C API functions @node mysql_stat, mysql_store_result, mysql_shutdown, C API functions
@subsection @code{mysql_stat()} @subsubsection @code{mysql_stat()}
@code{char *mysql_stat(MYSQL *mysql)} @code{char *mysql_stat(MYSQL *mysql)}
...@@ -38644,7 +38657,7 @@ An unknown error occurred. ...@@ -38644,7 +38657,7 @@ An unknown error occurred.
@findex @code{mysql_store_result()} @findex @code{mysql_store_result()}
@node mysql_store_result, mysql_thread_id, mysql_stat, C API functions @node mysql_store_result, mysql_thread_id, mysql_stat, C API functions
@subsection @code{mysql_store_result()} @subsubsection @code{mysql_store_result()}
@code{MYSQL_RES *mysql_store_result(MYSQL *mysql)} @code{MYSQL_RES *mysql_store_result(MYSQL *mysql)}
...@@ -38709,7 +38722,7 @@ An unknown error occurred. ...@@ -38709,7 +38722,7 @@ An unknown error occurred.
@findex @code{mysql_thread_id()} @findex @code{mysql_thread_id()}
@node mysql_thread_id, mysql_use_result, mysql_store_result, C API functions @node mysql_thread_id, mysql_use_result, mysql_store_result, C API functions
@subsection @code{mysql_thread_id()} @subsubsection @code{mysql_thread_id()}
@code{unsigned long mysql_thread_id(MYSQL *mysql)} @code{unsigned long mysql_thread_id(MYSQL *mysql)}
...@@ -38731,7 +38744,7 @@ None. ...@@ -38731,7 +38744,7 @@ None.
@findex @code{mysql_use_result()} @findex @code{mysql_use_result()}
@node mysql_use_result, NULL mysql_store_result, mysql_thread_id, C API functions @node mysql_use_result, NULL mysql_store_result, mysql_thread_id, C API functions
@subsection @code{mysql_use_result()} @subsubsection @code{mysql_use_result()}
@code{MYSQL_RES *mysql_use_result(MYSQL *mysql)} @code{MYSQL_RES *mysql_use_result(MYSQL *mysql)}
...@@ -39639,15 +39652,19 @@ interface that is based on msqltcl 1.50. ...@@ -39639,15 +39652,19 @@ interface that is based on msqltcl 1.50.
* Compare PostgreSQL:: How @strong{MySQL} compares with PostgreSQL * Compare PostgreSQL:: How @strong{MySQL} compares with PostgreSQL
@end menu @end menu
@node Compare mSQL, Compare PostgreSQL, Comparisons, Comparisons This chapter compares @strong{MySQL} to other popular databases.
@section How MySQL Compares to @code{mSQL}
This section has been written by the @strong{MySQL} developers, so it This chapter has been written by the @strong{MySQL} developers, so it
should be read with that in mind. But there are NO factual errors that should be read with that in mind. There are no factual errors contained
we know of. in this chapter that we know of. If you find something which you believe
to be an error, please contact us about it at @email{docs@@mysql.com}.
For a list of all supported limits, functions, and types, see the For a list of all supported limits, functions, and types, see the
@uref{http://www.mysql.com/information/crash-me.php, @code{crash-me} Web page}. @code{crash-me} Web page at
@uref{http://www.mysql.com/information/crash-me.php}.
@node Compare mSQL, Compare PostgreSQL, Comparisons, Comparisons
@section How MySQL Compares to @code{mSQL}
@table @strong @table @strong
@item Performance @item Performance
...@@ -40675,6 +40692,11 @@ variables to modify the behavior of @strong{MySQL}. @xref{Option files}. ...@@ -40675,6 +40692,11 @@ variables to modify the behavior of @strong{MySQL}. @xref{Option files}.
@node Users, MySQL customer usage, Environment variables, Top @node Users, MySQL customer usage, Environment variables, Top
@appendix Some MySQL Users @appendix Some MySQL Users
This appendix lists some users of @strong{MySQL} that have given us permission
to list them in our documentation. It is by far not a complete list, but
should give you a general idea of who uses @strong{MySQL} and what it can
be used for.
@appendixsec General News Sites @appendixsec General News Sites
@itemize @bullet @itemize @bullet
...@@ -41092,12 +41114,13 @@ give you an idea of how other @strong{MySQL} users are using ...@@ -41092,12 +41114,13 @@ give you an idea of how other @strong{MySQL} users are using
This manual section is very new and we plan to add more stories here This manual section is very new and we plan to add more stories here
shortly. If you are interested in contributing of how you use shortly. If you are interested in contributing of how you use
@strong{MySQL} in a unique environment or have success store about how you @strong{MySQL} in a unique environment or have success store about how you
use @strong{MySQL}, you can write to @code{docs@@lists.mysql.com} with use @strong{MySQL}, you can write to @code{docs@@mysql.com} with
subject @code{Success:}. Note that as we are very busy it may take some subject @code{Success:}. Note that as we are very busy it may take some
time before you get some feedback for your story. time before you get some feedback for your story.
@itemize @bullet @itemize @bullet
@item @item
@strong{Peter Zaitsev of Spylog.ru} writes:
I think you might be interested in my database size. The whole database I think you might be interested in my database size. The whole database
is currently on 15 servers and I think it's about 60.000 of tables is currently on 15 servers and I think it's about 60.000 of tables
containing about 5.000.000.000 of rows. My mostly loaded server containing about 5.000.000.000 of rows. My mostly loaded server
...@@ -41106,10 +41129,9 @@ Hugest tables have about 50.000.000 of rows, and this value will raise ...@@ -41106,10 +41129,9 @@ Hugest tables have about 50.000.000 of rows, and this value will raise
as soon as I'll move to 2.4 kernel with large files. Currently I have to as soon as I'll move to 2.4 kernel with large files. Currently I have to
delete much of logs for large sites to hold table sizes in 2Gb. delete much of logs for large sites to hold table sizes in 2Gb.
Peter Zaitsev, Spylog.ru.
@item @item
Texas Instrument is using MySQL for handling tables that contains up @strong{Texas Instruments} is using @strong{MySQL} for handling tables
o 2,000 million rows in a validation regression database. that contain up to 2,000 million rows in a validation regression database.
@end itemize @end itemize
@page @page
...@@ -41130,10 +41152,6 @@ interface, you should fetch the @code{Data-Dumper}, @code{DBI}, and ...@@ -41130,10 +41152,6 @@ interface, you should fetch the @code{Data-Dumper}, @code{DBI}, and
@xref{Perl support}. @xref{Perl support}.
@end ifclear @end ifclear
@uref{http://www.mysql.com/Downloads/Contrib/00-README, 00-README}
This listing.
@appendixsec APIs @appendixsec APIs
@cindex Perl, modules @cindex Perl, modules
...@@ -41861,8 +41879,8 @@ interested in. ...@@ -41861,8 +41879,8 @@ interested in.
@node Credits, News, Contrib, Top @node Credits, News, Contrib, Top
@appendix Credits @appendix Credits
The following persons and companies have helped us make MySQL what it is This appendix lists the developers, contributors, and supporters that have
today: helped to make @strong{MySQL} what it is today.
@cindex developers, list of @cindex developers, list of
@menu @menu
...@@ -41874,8 +41892,10 @@ today: ...@@ -41874,8 +41892,10 @@ today:
@node Developers, Contributors, Credits, Credits @node Developers, Contributors, Credits, Credits
@appendixsubsec Developers at MySQL AB @appendixsubsec Developers at MySQL AB
Developers that are or have been employed by MySQL AB to work on MySQL. These are the developers that are or have been employed by MySQL AB to work
(Roughly in the order they started to work with us.) on MySQL, roughly in the order they started to work with us. Following each
developer is a small list of the tasks that the developer is responsible for,
or the accomplishments they have made.
@table @asis @table @asis
@item Michael (Monty) Widenius @item Michael (Monty) Widenius
...@@ -42059,7 +42079,7 @@ Allan Larsson (The BOSS for TCX DataKonsult AB). ...@@ -42059,7 +42079,7 @@ Allan Larsson (The BOSS for TCX DataKonsult AB).
@node Contributors, Supporters, Developers, Credits @node Contributors, Supporters, Developers, Credits
@appendixsubsec Contributors to MySQL @appendixsubsec Contributors to MySQL
Contributors to the @strong{MySQL} distribution are listed below, in Contributors to the @strong{MySQL} distribution are listed here, in
somewhat random order: somewhat random order:
@table @asis @table @asis
...@@ -42249,7 +42269,7 @@ Mike Simons, Jaakko Hyvatti. ...@@ -42249,7 +42269,7 @@ Mike Simons, Jaakko Hyvatti.
And lots of bug report/patches from the folks on the mailing list. And lots of bug report/patches from the folks on the mailing list.
And a big tribute to those that help us answer questions on the A big tribute goes to those that help us answer questions on the
@code{mysql@@lists.mysql.com} mailing list: @code{mysql@@lists.mysql.com} mailing list:
@table @asis @table @asis
...@@ -42295,7 +42315,7 @@ The following companies has helped us finance development of ...@@ -42295,7 +42315,7 @@ The following companies has helped us finance development of
@strong{MySQL} by either paying us for developing a new feature, @strong{MySQL} by either paying us for developing a new feature,
developed a @strong{MySQL} feature themself or by giving us hardware for developed a @strong{MySQL} feature themself or by giving us hardware for
@strong{MySQL} development. @strong{MySQL} development.
@multitable @columnfractions .3 .7 @multitable @columnfractions .3 .7
@item Va Linux / Andover.net @tab Replication @item Va Linux / Andover.net @tab Replication
@item NuSphere @tab Editing of the @strong{MySQL} manual. @item NuSphere @tab Editing of the @strong{MySQL} manual.
...@@ -42309,8 +42329,11 @@ developed a @strong{MySQL} feature themself or by giving us hardware for ...@@ -42309,8 +42329,11 @@ developed a @strong{MySQL} feature themself or by giving us hardware for
@node News, Bugs, Credits, Top @node News, Bugs, Credits, Top
@appendix MySQL change history @appendix MySQL change history
Note that we tend to update the manual at the same time we implement new This appendix lists the changes from version to version in the @strong{MySQL}
things to @strong{MySQL}. If you find a version listed below that you can't source code.
Note that we tend to update the manual at the same time we make changes to
@strong{MySQL}. If you find a version listed below that you can't
find on the find on the
@uref{http://www.mysql.com/downloads/,@strong{MySQL} download page}, @uref{http://www.mysql.com/downloads/,@strong{MySQL} download page},
this means that the version has not yet been released! this means that the version has not yet been released!
...@@ -42328,7 +42351,8 @@ this means that the version has not yet been released! ...@@ -42328,7 +42351,8 @@ this means that the version has not yet been released!
@appendixsec Changes in release 4.0.x (Development; Alpha) @appendixsec Changes in release 4.0.x (Development; Alpha)
We have now started to work on MySQL 4.0. We will update this section We have now started to work on MySQL 4.0. We will update this section
as we add new features so that other can follow our development. as we add new features, so that others can follow our development.
Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}. Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}.
@menu @menu
...@@ -42354,13 +42378,28 @@ Added @code{ORDER BY} syntax to @code{UPDATE} and @code{DELETE}. ...@@ -42354,13 +42378,28 @@ Added @code{ORDER BY} syntax to @code{UPDATE} and @code{DELETE}.
@appendixsec Changes in release 3.23.x (Stable) @appendixsec Changes in release 3.23.x (Stable)
The 3.23 release has several major features that are not The 3.23 release has several major features that are not
present in previous versions. We have added two new present in previous versions. We have added three new
table types: MyISAM, a new ISAM library which is tuned for SQL table types:
and supports large files; and BerkeleyDB which uses the Berkeley
DB library from Sleepycat Software to implement transaction-safe @itemize @bullet
tables. The 3.23 release also includes support for database @item MyISAM
replication between a master and many slaves, full-text indexing, A new ISAM library which is tuned for SQL and supports large files.
and much more. @item BerkeleyDB or BDB
Uses the Berkeley DB library from Sleepycat Software to implement
transaction-safe tables.
@item Innobase
A transaction-safe table handler that supports row level locking, and many
Oracle-like features.
@c change "three" to "four" above when uncommenting this
@c @item Gemini
@c A transaction-safe, row-level locking table handler that supports many
@c features required in a mission-critical environment.
@end itemize
Note that only MyISAM is available in the standard binary distribution.
The 3.23 release also includes support for database replication between
a master and many slaves, full-text indexing, and much more.
All new features are being developed in the 4.0 version. Only All new features are being developed in the 4.0 version. Only
bug fixes and minor enhancements to existing features will be bug fixes and minor enhancements to existing features will be
...@@ -42376,7 +42415,7 @@ Note that the above doesn't mean that replication or Berkeley DB doesn't ...@@ -42376,7 +42415,7 @@ Note that the above doesn't mean that replication or Berkeley DB doesn't
work; We have done a lot of testing of all code, including replication work; We have done a lot of testing of all code, including replication
and BDB without finding any problems. It only means that not as many and BDB without finding any problems. It only means that not as many
users uses this code as the rest of the code and because of this we are users uses this code as the rest of the code and because of this we are
not yet 100 % confident in this code. not yet 100% confident in this code.
@menu @menu
* News-3.23.37:: Changes in release 3.23.37 * News-3.23.37:: Changes in release 3.23.37
...@@ -44410,15 +44449,10 @@ Added @code{mysqld} option @code{--default-table-type}. ...@@ -44410,15 +44449,10 @@ Added @code{mysqld} option @code{--default-table-type}.
@node News-3.22.x, News-3.21.x, News-3.23.x, News @node News-3.22.x, News-3.21.x, News-3.23.x, News
@appendixsec Changes in release 3.22.x (Older; Still supported) @appendixsec Changes in release 3.22.x (Older; Still supported)
The 3.22 version has faster and safer connect code and a lot of new nice The 3.22 version has faster and safer connect code than version 3.21, as well
enhancements. The reason for not including these changes in the 3.21 version as a lot of new nice enhancements. The reason for not including these changes
is mainly that we are trying to avoid big changes to 3.21 to keep it as As there aren't really any MAJOR changes, upgrading from 3.21 to 3.22 should
stable as possible. As there aren't really any MAJOR changes, upgrading to be very easy and painless. @xref{Upgrading-from-3.21}.
3.22 should be very easy and painless.
@xref{Upgrading-from-3.21}.
3.22 should also be used with the new @code{DBD-mysql} (1.20xx) driver
that can use the new connect protocol!
@menu @menu
* News-3.22.35:: Changes in release 3.22.35 * News-3.22.35:: Changes in release 3.22.35
...@@ -45538,6 +45572,9 @@ most important string functions for more speed! ...@@ -45538,6 +45572,9 @@ most important string functions for more speed!
@node News-3.21.x, News-3.20.x, News-3.22.x, News @node News-3.21.x, News-3.20.x, News-3.22.x, News
@appendixsec Changes in release 3.21.x @appendixsec Changes in release 3.21.x
Version 3.21 is quite old now, and should be avoided if possible. This
information is kept here for historical purposes only.
@menu @menu
* News-3.21.33:: Changes in release 3.21.33 * News-3.21.33:: Changes in release 3.21.33
* News-3.21.32:: Changes in release 3.21.32 * News-3.21.32:: Changes in release 3.21.32
...@@ -46648,6 +46685,9 @@ mysql> SELECT * FROM tbl_name ...@@ -46648,6 +46685,9 @@ mysql> SELECT * FROM tbl_name
@node News-3.20.x, News-3.19.x, News-3.21.x, News @node News-3.20.x, News-3.19.x, News-3.21.x, News
@appendixsec Changes in release 3.20.x @appendixsec Changes in release 3.20.x
Version 3.20 is quite old now, and should be avoided if possible. This
information is kept here for historical purposes only.
Changes from 3.20.18 to 3.20.32b are not documented here because the Changes from 3.20.18 to 3.20.32b are not documented here because the
3.21 release branched here. And the relevant changes are also 3.21 release branched here. And the relevant changes are also
documented as changes to the 3.21 version. documented as changes to the 3.21 version.
...@@ -47209,6 +47249,9 @@ New @file{INSTALL} files (not final version) and some information regarding port ...@@ -47209,6 +47249,9 @@ New @file{INSTALL} files (not final version) and some information regarding port
@node News-3.19.x, , News-3.20.x, News @node News-3.19.x, , News-3.20.x, News
@appendixsec Changes in release 3.19.x @appendixsec Changes in release 3.19.x
Version 3.19 is quite old now, and should be avoided if possible. This
information is kept here for historical purposes only.
@menu @menu
* News-3.19.5:: Changes in release 3.19.5 * News-3.19.5:: Changes in release 3.19.5
* News-3.19.4:: Changes in release 3.19.4 * News-3.19.4:: Changes in release 3.19.4
...@@ -47523,8 +47566,10 @@ For platform-specific bugs, see the sections about compiling and porting. ...@@ -47523,8 +47566,10 @@ For platform-specific bugs, see the sections about compiling and porting.
* TODO unplanned:: Some things we don't have any plans to do * TODO unplanned:: Some things we don't have any plans to do
@end menu @end menu
Everything in this list is in the order it will be done. If you want to This appendix lists the features that we plan to implement in @strong{MySQL}.
affect the priority order, please register a license or support us and
Everything in this list is approximately in the order it will be done. If you
want to affect the priority order, please register a license or support us and
tell us what you want to have done more quickly. @xref{Licensing and Support}. tell us what you want to have done more quickly. @xref{Licensing and Support}.
@node TODO MySQL 4.0, TODO future, TODO, TODO @node TODO MySQL 4.0, TODO future, TODO, TODO
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment