Third batch of Howard's changes in NuSphere in manual.texi

parent d2340770
...@@ -1225,7 +1225,7 @@ pathnames. Example: ``The distribution is installed under the ...@@ -1225,7 +1225,7 @@ pathnames. Example: ``The distribution is installed under the
@item @samp{c} @item @samp{c}
Constant-width font with surrounding quotes is also used to indicate Constant-width font with surrounding quotes is also used to indicate
character sequences. Example: ``To specify a wildcard, use the @samp{%} character sequences. Example: ``To specify a wild card, use the @samp{%}
character.'' character.''
@item @emph{italic} @item @emph{italic}
...@@ -1284,7 +1284,7 @@ mysql> SELECT author_name FROM biblio_db.author_list; ...@@ -1284,7 +1284,7 @@ mysql> SELECT author_name FROM biblio_db.author_list;
@end example @end example
SQL statements may be written in uppercase or lowercase. When this manual SQL statements may be written in uppercase or lowercase. When this manual
shows a SQL statement, uppercase is used for particular keywords if those shows an SQL statement, uppercase is used for particular keywords if those
keywords are under discussion (to emphasize them) and lowercase is used for keywords are under discussion (to emphasize them) and lowercase is used for
the rest of the statement. For example, you might see the following in a the rest of the statement. For example, you might see the following in a
discussion of the @code{SELECT} statement: discussion of the @code{SELECT} statement:
...@@ -1943,7 +1943,7 @@ Publisher Sybex 510 523 8233 ...@@ -1943,7 +1943,7 @@ Publisher Sybex 510 523 8233
Alameda, CA USA Alameda, CA USA
@end example @end example
A SQL tutorial is available on the net at An SQL tutorial is available on the net at
http://www.geocities.com/SiliconValley/Vista/2207/sql1.html. http://www.geocities.com/SiliconValley/Vista/2207/sql1.html.
@c A nice german 404 error. (jcole) @c A nice german 404 error. (jcole)
...@@ -2394,7 +2394,7 @@ A Contact Database using @strong{MySQL} and PHP. ...@@ -2394,7 +2394,7 @@ A Contact Database using @strong{MySQL} and PHP.
Web based interface and Community Calender with PHP. Web based interface and Community Calender 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 Perl package to generate html from an SQL table structure and for generating
SQL statements from an html form. SQL statements from an html form.
@item @uref{http://www.gusnet.cx/proj/telsql/}@* @item @uref{http://www.gusnet.cx/proj/telsql/}@*
...@@ -5227,7 +5227,8 @@ work. @code{libg++} is not needed when using @code{gcc}. @code{gcc} ...@@ -5227,7 +5227,8 @@ work. @code{libg++} is not needed when using @code{gcc}. @code{gcc}
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}. you must upgrade your @code{gcc} to be able to compile @strong{MySQL}.
@code{gcc} >= 2.95.2 is recommended when compiling @strong{MySQL} 3.23.x. @code{gcc} >= 2.95.2 is recommended when compiling @strong{MySQL}
Version 3.23.x.
@item @item
A good @code{make} program. GNU @code{make} is always recommended and is A good @code{make} program. GNU @code{make} is always recommended and is
...@@ -7637,7 +7638,7 @@ the DCE libraries while you compile @code{gcc} 2.95! ...@@ -7637,7 +7638,7 @@ the DCE libraries while you compile @code{gcc} 2.95!
@node HP-UX 11.x, Mac OS X, HP-UX 10.20, Source install system issues @node HP-UX 11.x, Mac OS X, HP-UX 10.20, Source install system issues
@subsection HP-UX Version 11.x Notes @subsection HP-UX Version 11.x Notes
For HPUX Version 11.x we recommend @strong{MySQL} 3.23.15 or later. For HPUX Version 11.x we recommend @strong{MySQL} Version 3.23.15 or later.
If you are using @code{gcc} 2.95.1 on a unpatched HPUX 11.x system, If you are using @code{gcc} 2.95.1 on a unpatched HPUX 11.x system,
you will get the error: you will get the error:
...@@ -10439,7 +10440,7 @@ In @strong{MySQL} Version 3.23 you can, however, use: ...@@ -10439,7 +10440,7 @@ In @strong{MySQL} Version 3.23 you can, however, use:
The following discussion only concerns you if you are running a @strong{MySQL} The following discussion only concerns you if you are running a @strong{MySQL}
version earlier than Version 3.23: version earlier than Version 3.23:
If you have a SQL program in a text file that contains @samp{--} comments If you have an SQL program in a text file that contains @samp{--} comments
you should use: you should use:
@example @example
...@@ -10850,7 +10851,7 @@ mysql> FLUSH PRIVILEGES; ...@@ -10850,7 +10851,7 @@ mysql> FLUSH PRIVILEGES;
Don't run the @strong{MySQL} daemon as the UNIX @code{root} user. Don't run the @strong{MySQL} daemon as the UNIX @code{root} user.
It is very dangerous as any user with @code{FILE} privileges will be able to It is very dangerous as any user with @code{FILE} privileges will be able to
create files create files
as @code{root} (e.g. @code{~root/.bashrc}). To prevent this as @code{root} (for example, @code{~root/.bashrc}). To prevent this
@code{mysqld} will refuse to run as @code{root} unless it is specified @code{mysqld} will refuse to run as @code{root} unless it is specified
directly via @code{--user=root} option. directly via @code{--user=root} option.
...@@ -10989,7 +10990,7 @@ one used during the UNIX login process. See the descriptions of the ...@@ -10989,7 +10990,7 @@ one used during the UNIX login process. See the descriptions of the
@code{PASSWORD()} and @code{ENCRYPT()} functions in @ref{Miscellaneous @code{PASSWORD()} and @code{ENCRYPT()} functions in @ref{Miscellaneous
functions}. Note that even if the password is stored 'scrambled', and functions}. Note that even if the password is stored 'scrambled', and
knowing your 'scrambled' password is enough to be able to connect to knowing your 'scrambled' password is enough to be able to connect to
the the @strong{MySQL} server! the @strong{MySQL} server!
@end itemize @end itemize
@node Connecting, Password security, User names, Privilege system @node Connecting, Password security, User names, Privilege system
...@@ -11540,7 +11541,7 @@ to indicate the local host. ...@@ -11540,7 +11541,7 @@ to indicate the local host.
@item @item
@cindex wildcards, in @code{mysql.user} table @cindex wildcards, in @code{mysql.user} table
You can use the wild card characters @samp{%} and @samp{_} in the @code{Host} You can use the wild-card characters @samp{%} and @samp{_} in the @code{Host}
field. field.
@item @item
...@@ -11569,7 +11570,7 @@ In the above example all IP:s in the interval 192.58.197.0 - ...@@ -11569,7 +11570,7 @@ In the above example all IP:s in the interval 192.58.197.0 -
@item @item
@cindex anonymous user @cindex anonymous user
Wild card characters are not allowed in the @code{User} field, but you can Wild-card characters are not allowed in the @code{User} field, but you can
specify a blank value, which matches any name. If the @code{user} table specify a blank value, which matches any name. If the @code{user} table
entry that matches an incoming connection has a blank user name, the user is entry that matches an incoming connection has a blank user name, the user is
considered to be the anonymous user (the user with no name), rather than the considered to be the anonymous user (the user with no name), rather than the
...@@ -11611,14 +11612,14 @@ connections: ...@@ -11611,14 +11612,14 @@ connections:
@item @code{'144.155.166.0/24'} @tab @code{'fred'} @tab Same as previous example @item @code{'144.155.166.0/24'} @tab @code{'fred'} @tab Same as previous example
@end multitable @end multitable
Because you can use IP wild card values in the @code{Host} field (for example, Because you can use IP wild-card values in the @code{Host} field (for example,
@code{'144.155.166.%'} to match every host on a subnet), there is the @code{'144.155.166.%'} to match every host on a subnet), there is the
possibility that someone might try to exploit this capability by naming a possibility that someone might try to exploit this capability by naming a
host @code{144.155.166.somewhere.com}. To foil such attempts, @strong{MySQL} host @code{144.155.166.somewhere.com}. To foil such attempts, @strong{MySQL}
disallows matching on hostnames that start with digits and a dot. Thus, if disallows matching on hostnames that start with digits and a dot. Thus, if
you have a host named something like @code{1.2.foo.com}, its name will never you have a host named something like @code{1.2.foo.com}, its name will never
match the @code{Host} column of the grant tables. Only an IP number can match the @code{Host} column of the grant tables. Only an IP number can
match an IP wild card value. match an IP wild-card value.
An incoming connection may be matched by more than one entry in the An incoming connection may be matched by more than one entry in the
@code{user} table. For example, a connection from @code{thomas.loc.gov} by @code{user} table. For example, a connection from @code{thomas.loc.gov} by
...@@ -11738,7 +11739,7 @@ Values in the scope fields may be specified as follows: ...@@ -11738,7 +11739,7 @@ Values in the scope fields may be specified as follows:
@itemize @bullet @itemize @bullet
@item @item
The wild card characters @samp{%} and @samp{_} can be used in the @code{Host} The wild-card characters @samp{%} and @samp{_} can be used in the @code{Host}
and @code{Db} fields of either table. and @code{Db} fields of either table.
@item @item
...@@ -11778,7 +11779,7 @@ follows: ...@@ -11778,7 +11779,7 @@ follows:
@itemize @bullet @itemize @bullet
@item @item
The wild card characters @samp{%} and @samp{_} The wild-card characters @samp{%} and @samp{_}
can be used in the @code{Host} field of either table. can be used in the @code{Host} field of either table.
@item @item
...@@ -12715,14 +12716,14 @@ A backslash (@samp{\}) character. ...@@ -12715,14 +12716,14 @@ A backslash (@samp{\}) character.
@item \% @item \%
A @samp{%} character. This is used to search for literal instances of A @samp{%} character. This is used to search for literal instances of
@samp{%} in contexts where @samp{%} would otherwise be interpreted @samp{%} in contexts where @samp{%} would otherwise be interpreted
as a wild card character. @xref{String comparison functions}. as a wild-card character. @xref{String comparison functions}.
@findex _ (wild card character) @findex _ (wild card character)
@findex Wild card character (_) @findex Wild card character (_)
@item \_ @item \_
A @samp{_} character. This is used to search for literal instances of A @samp{_} character. This is used to search for literal instances of
@samp{_} in contexts where @samp{_} would otherwise be interpreted @samp{_} in contexts where @samp{_} would otherwise be interpreted
as a wild card character. @xref{String comparison functions}. as a wild-card character. @xref{String comparison functions}.
@end table @end table
Note that if you use @samp{\%} or @samp{\_} in some string contexts, these Note that if you use @samp{\%} or @samp{\_} in some string contexts, these
...@@ -13264,8 +13265,8 @@ numbers. ...@@ -13264,8 +13265,8 @@ numbers.
@tindex YEAR @tindex YEAR
@item YEAR[(2|4)] @item YEAR[(2|4)]
A year in 2- or 4- digit formats (default is 4-digit). The allowable values A year in 2- or 4-digit format (default is 4-digit). The allowable values
are @code{1901} to @code{2155}, and @code{0000} in the 4-digit year format, are @code{1901} to @code{2155}, @code{0000} in the 4-digit year format,
and 1970-2069 if you use the 2-digit format (70-69). @strong{MySQL} displays and 1970-2069 if you use the 2-digit format (70-69). @strong{MySQL} displays
@code{YEAR} values in @code{YYYY} format, but allows you to assign values to @code{YEAR} values in @code{YYYY} format, but allows you to assign values to
@code{YEAR} columns using either strings or numbers. (The @code{YEAR} type is @code{YEAR} columns using either strings or numbers. (The @code{YEAR} type is
...@@ -13527,7 +13528,7 @@ of an integral value in parentheses following the base keyword for the ...@@ -13527,7 +13528,7 @@ of an integral value in parentheses following the base keyword for the
type (for example, @code{INT(4)}). This optional width specification is type (for example, @code{INT(4)}). This optional width specification is
used to left-pad the display of values whose width is less than the used to left-pad the display of values whose width is less than the
width specified for the column, but does not constrain the range of width specified for the column, but does not constrain the range of
values which can be stored in the column, nor the number of digits that values that can be stored in the column, nor the number of digits that
will be displayed for values whose width exceeds that specified for the will be displayed for values whose width exceeds that specified for the
column. When used in conjunction with the optional extension attribute column. When used in conjunction with the optional extension attribute
@code{ZEROFILL}, the default padding of spaces is replaced with zeroes. @code{ZEROFILL}, the default padding of spaces is replaced with zeroes.
...@@ -14231,9 +14232,10 @@ communications buffers. You can change the message buffer size, but you must ...@@ -14231,9 +14232,10 @@ communications buffers. You can change the message buffer size, but you must
do so on both the server and client ends. @xref{Server parameters}. do so on both the server and client ends. @xref{Server parameters}.
@end itemize @end itemize
Note that each @code{BLOB} or @code{TEXT} value is represented internally by Note that each @code{BLOB} or @code{TEXT} value is represented
a separately allocated object. This is in contrast to all other column types, internally by a separately allocated object. This is in contrast to all
for which storage is allocated once per column when the table is opened. other column types, for which storage is allocated once per column when
the table is opened.
@tindex ENUM @tindex ENUM
@node ENUM, SET, BLOB, String types @node ENUM, SET, BLOB, String types
...@@ -14563,7 +14565,7 @@ statement, @strong{MySQL} reports the table structure using the equivalent ...@@ -14563,7 +14565,7 @@ statement, @strong{MySQL} reports the table structure using the equivalent
@node Functions, CREATE DATABASE, Column types, Reference @node Functions, CREATE DATABASE, Column types, Reference
@section Functions for Use in @code{SELECT} and @code{WHERE} Clauses @section Functions for Use in @code{SELECT} and @code{WHERE} Clauses
A @code{select_expression} or @code{where_definition} in a SQL statement A @code{select_expression} or @code{where_definition} in an SQL statement
can consist of any expression using the functions described below. can consist of any expression using the functions described below.
An expression that contains @code{NULL} always produces a @code{NULL} value An expression that contains @code{NULL} always produces a @code{NULL} value
...@@ -14636,8 +14638,8 @@ mysql> select (1+2)*3; ...@@ -14636,8 +14638,8 @@ mysql> select (1+2)*3;
@subsection Normal Arithmetic Operations @subsection Normal Arithmetic Operations
The usual arithmetic operators are available. Note that in the case of The usual arithmetic operators are available. Note that in the case of
@samp{-}, @samp{+}, and @samp{*}, the result is calculated with @code{BIGINT} @samp{-}, @samp{+}, and @samp{*}, the result is calculated with
(64-bit) precision if both arguments are integers! @code{BIGINT} (64-bit) precision if both arguments are integers!
@cindex operations, arithmetic @cindex operations, arithmetic
@cindex arithmetic expressions @cindex arithmetic expressions
...@@ -15081,7 +15083,7 @@ comparison is performed in case-sensitive fashion. ...@@ -15081,7 +15083,7 @@ comparison is performed in case-sensitive fashion.
@item expr LIKE pat [ESCAPE 'escape-char'] @item expr LIKE pat [ESCAPE 'escape-char']
Pattern matching using Pattern matching using
SQL simple regular expression comparison. Returns @code{1} (TRUE) or @code{0} SQL simple regular expression comparison. Returns @code{1} (TRUE) or @code{0}
(FALSE). With @code{LIKE} you can use the following two wild card characters (FALSE). With @code{LIKE} you can use the following two wild-card characters
in the pattern: in the pattern:
@multitable @columnfractions .1 .9 @multitable @columnfractions .1 .9
...@@ -15096,7 +15098,7 @@ mysql> select 'David!' LIKE '%D%v%'; ...@@ -15096,7 +15098,7 @@ mysql> select 'David!' LIKE '%D%v%';
-> 1 -> 1
@end example @end example
To test for literal instances of a wild card character, precede the character To test for literal instances of a wild-card character, precede the character
with the escape character. If you don't specify the @code{ESCAPE} character, with the escape character. If you don't specify the @code{ESCAPE} character,
@samp{\} is assumed: @samp{\} is assumed:
...@@ -15221,7 +15223,7 @@ mysql> select BINARY "a" = "A"; ...@@ -15221,7 +15223,7 @@ mysql> select BINARY "a" = "A";
-> 0 -> 0
@end example @end example
@code{BINARY} was introduced in @strong{MySQL} 3.23.0. @code{BINARY} was introduced in @strong{MySQL} Version 3.23.0.
@end table @end table
@findex control flow functions @findex control flow functions
...@@ -15293,8 +15295,9 @@ may not be what you expect. In the second case, the comparison tests the ...@@ -15293,8 +15295,9 @@ may not be what you expect. In the second case, the comparison tests the
original floating-point value to see whether it is non-zero. The result original floating-point value to see whether it is non-zero. The result
of the comparison is used as an integer. of the comparison is used as an integer.
The default return type of @code{IF()} (which may matter when it is stored into The default return type of @code{IF()} (which may matter when it is
a temporary table) is calculated in @strong{MySQL} Version 3.23 as follows: stored into a temporary table) is calculated in @strong{MySQL} Version
3.23 as follows:
@multitable @columnfractions .55 .45 @multitable @columnfractions .55 .45
@item @strong{Expression} @tab @strong{Return value} @item @strong{Expression} @tab @strong{Return value}
...@@ -18423,7 +18426,7 @@ in cases where it takes a long time to send the result set to the client. ...@@ -18423,7 +18426,7 @@ in cases where it takes a long time to send the result set to the client.
with @code{GROUP BY} or @code{DISTINCT} to tell the optimizer that the with @code{GROUP BY} or @code{DISTINCT} to tell the optimizer that the
result set will be small. In this case, @strong{MySQL} will use fast result set will be small. In this case, @strong{MySQL} will use fast
temporary tables to store the resulting table instead of using sorting. In temporary tables to store the resulting table instead of using sorting. In
@strong{MySQL} 3.23 this shouldn't normally be needed. @strong{MySQL} Version 3.23 this shouldn't normally be needed.
@item @item
@code{STRAIGHT_JOIN} forces the optimizer to join the tables in the order in @code{STRAIGHT_JOIN} forces the optimizer to join the tables in the order in
...@@ -18614,7 +18617,7 @@ is always read before the right table. This can be used for those (few) ...@@ -18614,7 +18617,7 @@ is always read before the right table. This can be used for those (few)
cases where the join optimizer puts the tables in the wrong order. cases where the join optimizer puts the tables in the wrong order.
@item @item
As of @strong{MySQL} 3.23.12, you can give hints about which As of @strong{MySQL} Version 3.23.12, you can give hints about which
index @strong{MySQL} should use when retrieving information from a index @strong{MySQL} should use when retrieving information from a
table. This is useful if @code{EXPLAIN} shows that @strong{MySQL} is table. This is useful if @code{EXPLAIN} shows that @strong{MySQL} is
using the wrong index. By specifying @code{USE INDEX (key_list)}, you using the wrong index. By specifying @code{USE INDEX (key_list)}, you
...@@ -18953,7 +18956,7 @@ host to the server host. On the other hand, you do not need the ...@@ -18953,7 +18956,7 @@ host to the server host. On the other hand, you do not need the
@strong{file} privilege to load local files. @strong{file} privilege to load local files.
@c old version @c old version
If you are using @strong{MySQL} before 3.23.24 you can't read from a If you are using @strong{MySQL} before Version 3.23.24 you can't read from a
FIFO with @code{LOAD DATA INFILE}; If you need to read from a FIFO (for FIFO with @code{LOAD DATA INFILE}; If you need to read from a FIFO (for
example the output from gunzip), use @code{LOAD DATA LOCAL INFILE} example the output from gunzip), use @code{LOAD DATA LOCAL INFILE}
instead. instead.
...@@ -19218,7 +19221,7 @@ the list just given. ...@@ -19218,7 +19221,7 @@ the list just given.
For input, if the @code{FIELDS ESCAPED BY} character is not empty, occurrences For input, if the @code{FIELDS ESCAPED BY} character is not empty, occurrences
of that character are stripped and the following character is taken literally of that character are stripped and the following character is taken literally
as part of a field value. The exceptions are an escaped @samp{0} or as part of a field value. The exceptions are an escaped @samp{0} or
@samp{N} (e.g., @code{\0} or @code{\N} if the escape character is @samp{N} (for example, @code{\0} or @code{\N} if the escape character is
@samp{\}). These sequences are interpreted as ASCII @code{0} (a zero-valued @samp{\}). These sequences are interpreted as ASCII @code{0} (a zero-valued
byte) and @code{NULL}. See below for the rules on @code{NULL} handling. byte) and @code{NULL}. See below for the rules on @code{NULL} handling.
...@@ -19433,8 +19436,8 @@ In @strong{MySQL} 3.22 or later, the C API function @code{mysql_info()} ...@@ -19433,8 +19436,8 @@ In @strong{MySQL} 3.22 or later, the C API function @code{mysql_info()}
returns the number of rows that were matched and updated and the number of returns the number of rows that were matched and updated and the number of
warnings that occurred during the @code{UPDATE}. warnings that occurred during the @code{UPDATE}.
In @strong{MySQL} 3.23 you can use @code{LIMIT #} to ensure that only a given In @strong{MySQL} Version 3.23 you can use @code{LIMIT #} to ensure that
number of rows are changed. only a given number of rows are changed.
@findex USE @findex USE
@node USE, FLUSH, UPDATE, Reference @node USE, FLUSH, UPDATE, Reference
...@@ -19572,7 +19575,7 @@ or SHOW CREATE TABLE table_name ...@@ -19572,7 +19575,7 @@ or SHOW CREATE TABLE table_name
@code{SHOW} provides information about databases, tables, columns or @code{SHOW} provides information about databases, tables, columns or
status information about the server. If the @code{LIKE wild} part is status information about the server. If the @code{LIKE wild} part is
used, the @code{wild} string can be a string that uses the SQL @samp{%} used, the @code{wild} string can be a string that uses the SQL @samp{%}
and @samp{_} wild card characters. and @samp{_} wild-card characters.
@findex SHOW DATABASES @findex SHOW DATABASES
@findex SHOW TABLES @findex SHOW TABLES
...@@ -20186,7 +20189,7 @@ information of how to tune the above variables. @xref{Server parameters}. ...@@ -20186,7 +20189,7 @@ information of how to tune the above variables. @xref{Server parameters}.
also get this information using the @code{mysqladmin processlist} also get this information using the @code{mysqladmin processlist}
command. If you have the @strong{process} privilege, you can see all command. If you have the @strong{process} privilege, you can see all
threads. Otherwise, you can see only your own threads. @xref{KILL, , threads. Otherwise, you can see only your own threads. @xref{KILL, ,
@code{KILL}}. If you don't use the the @code{FULL} option, then only @code{KILL}}. If you don't use the @code{FULL} option, then only
the first 100 characters of each query will be shown. the first 100 characters of each query will be shown.
@cindex privileges, display @cindex privileges, display
...@@ -20341,7 +20344,7 @@ BY} on. ...@@ -20341,7 +20344,7 @@ BY} on.
@item Where used @item Where used
A @code{WHERE} clause will be used to restrict which rows will be A @code{WHERE} clause will be used to restrict which rows will be
matched against the next table or sent to the client. If you don't have matched against the next table or sent to the client. If you don't have
this information and the the table is of type @code{ALL} or @code{index} this information and the table is of type @code{ALL} or @code{index}
you may have something wrong in your query (if you don't intend to you may have something wrong in your query (if you don't intend to
fetch/examine all rows from the table). fetch/examine all rows from the table).
@end table @end table
...@@ -20569,7 +20572,7 @@ the @code{FROM} clause. ...@@ -20569,7 +20572,7 @@ the @code{FROM} clause.
@code{DESCRIBE} provides information about a table's columns. @code{col_name} @code{DESCRIBE} provides information about a table's columns. @code{col_name}
may be a column name or a string containing the SQL @samp{%} and @samp{_} may be a column name or a string containing the SQL @samp{%} and @samp{_}
wild card characters. wild-card characters.
If the column types are different than you expect them to be based on a If the column types are different than you expect them to be based on a
@code{CREATE TABLE} statement, note that @strong{MySQL} sometimes @code{CREATE TABLE} statement, note that @strong{MySQL} sometimes
...@@ -20948,8 +20951,8 @@ In order to accommodate granting rights to users from arbitrary hosts, ...@@ -20948,8 +20951,8 @@ In order to accommodate granting rights to users from arbitrary hosts,
@strong{MySQL} supports specifying the @code{user_name} value in the form @strong{MySQL} supports specifying the @code{user_name} value in the form
@code{user@@host}. If you want to specify a @code{user} string @code{user@@host}. If you want to specify a @code{user} string
containing special characters (such as @samp{-}), or a @code{host} string containing special characters (such as @samp{-}), or a @code{host} string
containing special characters or wild card characters (such as @samp{%}), you containing special characters or wild-card characters (such as @samp{%}), you
can quote the user or host name (e.g., @code{'test-user'@@'test-hostname'}). can quote the user or host name (for example, @code{'test-user'@@'test-hostname'}).
You can specify wild cards in the hostname. For example, You can specify wild cards in the hostname. For example,
@code{user@@"%.loc.gov"} applies to @code{user} for any host in the @code{user@@"%.loc.gov"} applies to @code{user} for any host in the
...@@ -21018,7 +21021,7 @@ table is created if needed. When all privileges for the database have been ...@@ -21018,7 +21021,7 @@ table is created if needed. When all privileges for the database have been
removed with @code{REVOKE}, this entry is deleted. removed with @code{REVOKE}, this entry is deleted.
If a user doesn't have any privileges on a table, the table is not displayed If a user doesn't have any privileges on a table, the table is not displayed
when the user requests a list of tables (e.g., with a @code{SHOW TABLES} when the user requests a list of tables (for example, with a @code{SHOW TABLES}
statement). statement).
The @code{WITH GRANT OPTION} clause gives the user the ability to give The @code{WITH GRANT OPTION} clause gives the user the ability to give
...@@ -21138,7 +21141,7 @@ operations! ...@@ -21138,7 +21141,7 @@ operations!
Note that you can only add an index on a column that can have @code{NULL} Note that you can only add an index on a column that can have @code{NULL}
values or on a @code{BLOB}/@code{TEXT} column if you are using values or on a @code{BLOB}/@code{TEXT} column if you are using
@strong{MySQL} version 3.23.2 or newer and are using the @code{MyISAM} @strong{MySQL} Version 3.23.2 or newer and are using the @code{MyISAM}
table type. table type.
For more information about how @strong{MySQL} uses indexes, see For more information about how @strong{MySQL} uses indexes, see
...@@ -21146,7 +21149,7 @@ For more information about how @strong{MySQL} uses indexes, see ...@@ -21146,7 +21149,7 @@ For more information about how @strong{MySQL} uses indexes, see
@code{FULLTEXT} indexes can index only @code{VARCHAR} and @code{FULLTEXT} indexes can index only @code{VARCHAR} and
@code{TEXT} columns, and only in @code{MyISAM} tables. @code{FULLTEXT} indexes @code{TEXT} columns, and only in @code{MyISAM} tables. @code{FULLTEXT} indexes
are available in @strong{MySQL} 3.23.23 and later. are available in @strong{MySQL} Version 3.23.23 and later.
@ref{MySQL full-text search}. @ref{MySQL full-text search}.
@findex DROP INDEX @findex DROP INDEX
...@@ -21231,7 +21234,7 @@ A user-definable function (UDF) is a way to extend @strong{MySQL} with a new ...@@ -21231,7 +21234,7 @@ A user-definable function (UDF) is a way to extend @strong{MySQL} with a new
function that works like native (built in) @strong{MySQL} functions such as function that works like native (built in) @strong{MySQL} functions such as
@code{ABS()} and @code{CONCAT()}. @code{ABS()} and @code{CONCAT()}.
@code{AGGREGATE} is a new option for @strong{MySQL} 3.23. An @code{AGGREGATE} is a new option for @strong{MySQL} Version 3.23. An
@code{AGGREGATE} function works exactly like a native @strong{MySQL} @code{AGGREGATE} function works exactly like a native @strong{MySQL}
@code{GROUP} function like @code{SUM} or @code{COUNT()}. @code{GROUP} function like @code{SUM} or @code{COUNT()}.
...@@ -21375,7 +21378,7 @@ used them. ...@@ -21375,7 +21378,7 @@ used them.
@node Table types, Tutorial, Reference, Top @node Table types, Tutorial, Reference, Top
@chapter MySQL table types @chapter MySQL table types
As of @strong{MySQL} 3.23.6, you can choose between three basic As of @strong{MySQL} Version 3.23.6, you can choose between three basic
table formats. When you create a new table, you can tell @strong{MySQL} table formats. When you create a new table, you can tell @strong{MySQL}
which table type it should use for the table. @strong{MySQL} will which table type it should use for the table. @strong{MySQL} will
always create a @code{.frm} file to hold the table and column always create a @code{.frm} file to hold the table and column
...@@ -21436,7 +21439,7 @@ of both worlds. ...@@ -21436,7 +21439,7 @@ of both worlds.
@node MyISAM, MERGE, Table types, Table types @node MyISAM, MERGE, Table types, Table types
@section MyISAM tables @section MyISAM tables
@code{MyISAM} is the default table type in @strong{MySQL} 3.23. It's @code{MyISAM} is the default table type in @strong{MySQL} Version 3.23. It's
based on the @code{ISAM} code and has a lot of useful extensions. based on the @code{ISAM} code and has a lot of useful extensions.
The index is stored in a file with the @code{.MYI} (MYIndex) extension The index is stored in a file with the @code{.MYI} (MYIndex) extension
...@@ -21782,7 +21785,7 @@ Can be uncompressed with @code{myisamchk}. ...@@ -21782,7 +21785,7 @@ Can be uncompressed with @code{myisamchk}.
@node MERGE, ISAM, MyISAM, Table types @node MERGE, ISAM, MyISAM, Table types
@section MERGE tables @section MERGE tables
@code{MERGE} tables are new in @strong{MySQL} 3.23.25; The code is still @code{MERGE} tables are new in @strong{MySQL} Version 3.23.25; The code is still
in alpha, but should stabilize soon! The one thing that is currently in alpha, but should stabilize soon! The one thing that is currently
missing is a way from the SQL prompt to say which tables are part of the missing is a way from the SQL prompt to say which tables are part of the
@code{MERGE} table. @code{MERGE} table.
...@@ -22027,9 +22030,9 @@ SUM_OVER_ALL_KEYS(max_length_of_key + sizeof(char*) * 2) ...@@ -22027,9 +22030,9 @@ SUM_OVER_ALL_KEYS(max_length_of_key + sizeof(char*) * 2)
Berkeley DB (@uref{http://www.sleepycat.com}) has provided Berkeley DB (@uref{http://www.sleepycat.com}) has provided
@strong{MySQL} with a transaction safe table handler. This will survive @strong{MySQL} with a transaction safe table handler. This will survive
crashes and also provides @code{COMMIT} and @code{ROLLBACK} on crashes and also provides @code{COMMIT} and @code{ROLLBACK} on
transactions. In order to build MySQL 3.23.x (BDB support first appeared transactions. In order to build MySQL Version 3.23.x (BDB support first
in 3.23.15) with support for @code{BDB} tables, you will need Berkeley appeared in Version 3.23.15) with support for @code{BDB} tables, you
DB 3.1.14 or newer which can be downloaded from will need Berkeley DB 3.1.14 or newer which can be downloaded from
@uref{http://www.mysql.com/downloads/mysql-3.23.html}; or also from @uref{http://www.mysql.com/downloads/mysql-3.23.html}; or also from
Sleepycat's download page at Sleepycat's download page at
@uref{http://www.sleepycat.com/download.html}. @uref{http://www.sleepycat.com/download.html}.
...@@ -22098,7 +22101,7 @@ you. The hidden key has a length of 5 bytes and is incremented for each ...@@ -22098,7 +22101,7 @@ you. The hidden key has a length of 5 bytes and is incremented for each
insert attempt. insert attempt.
@item @item
If all columns you access in a @code{BDB} tables is part of the same index or If all columns you access in a @code{BDB} tables is part of the same index or
part of the the primary key then @strong{MySQL} can execute the query part of the primary key then @strong{MySQL} can execute the query
without having to access the actual row. In a @code{MyISAM} table the without having to access the actual row. In a @code{MyISAM} table the
above holds only if the columns are part of the same index. above holds only if the columns are part of the same index.
@item @item
...@@ -22298,7 +22301,7 @@ This query illustrates several things about @code{mysql}: ...@@ -22298,7 +22301,7 @@ This query illustrates several things about @code{mysql}:
@itemize @bullet @itemize @bullet
@item @item
A command normally consists of a SQL statement followed by a semicolon. A command normally consists of an SQL statement followed by a semicolon.
(There are some exceptions where a semicolon is not needed. @code{QUIT}, (There are some exceptions where a semicolon is not needed. @code{QUIT},
mentioned earlier, is one of them. We'll get to others later.) mentioned earlier, is one of them. We'll get to others later.)
...@@ -22604,7 +22607,7 @@ ORDER BY price DESC ...@@ -22604,7 +22607,7 @@ ORDER BY price DESC
LIMIT 1 LIMIT 1
@end example @end example
@strong{Note}: If there are several most expensive articles (e.g. each 19.95) @strong{Note}: If there are several most expensive articles (for example, each 19.95)
the @code{LIMIT} solution shows only one of them! the @code{LIMIT} solution shows only one of them!
@node example-Maximum-column-group, example-Maximum-column-group-row, example-Maximum-row, Examples @node example-Maximum-column-group, example-Maximum-column-group-row, example-Maximum-row, Examples
...@@ -22944,7 +22947,7 @@ Enter password: ******** ...@@ -22944,7 +22947,7 @@ Enter password: ********
Note that @code{menagerie} is not your password on the command just shown. Note that @code{menagerie} is not your password on the command just shown.
If you want to supply your password on the command line after the @code{-p} If you want to supply your password on the command line after the @code{-p}
option, you must do so with no intervening space (e.g., as option, you must do so with no intervening space (for example, as
@code{-pmypassword}, not as @code{-p mypassword}). However, putting your @code{-pmypassword}, not as @code{-p mypassword}). However, putting your
password on the command line is not recommended, because doing so exposes it password on the command line is not recommended, because doing so exposes it
to snooping by other users logged in on your machine. to snooping by other users logged in on your machine.
...@@ -23815,7 +23818,7 @@ mysql> SELECT * FROM pet WHERE name REGEXP "[wW]"; ...@@ -23815,7 +23818,7 @@ mysql> SELECT * FROM pet WHERE name REGEXP "[wW]";
Because a regular expression pattern matches if it occurs anywhere in the Because a regular expression pattern matches if it occurs anywhere in the
value, it is not necessary in the previous query to put a wild card on either value, it is not necessary in the previous query to put a wild card on either
side of the pattern to get it to match the entire value like it would be if side of the pattern to get it to match the entire value like it would be if
you used a SQL pattern. you used an SQL pattern.
To find names containing exactly five characters, use @samp{^} and @samp{$} To find names containing exactly five characters, use @samp{^} and @samp{$}
to match the beginning and end of the name, and five instances of @samp{.} to match the beginning and end of the name, and five instances of @samp{.}
...@@ -24111,7 +24114,7 @@ each column reference is associated with. ...@@ -24111,7 +24114,7 @@ each column reference is associated with.
What if you forget the name of a database or table, or what the structure of What if you forget the name of a database or table, or what the structure of
a given table is (e.g., what its columns are called)? @strong{MySQL} a given table is (for example, what its columns are called)? @strong{MySQL}
addresses this problem through several statements that provide information addresses this problem through several statements that provide information
about the databases and tables it supports. about the databases and tables it supports.
...@@ -24542,7 +24545,7 @@ default character set in use to the client. The client will switch to ...@@ -24542,7 +24545,7 @@ default character set in use to the client. The client will switch to
use this character set for this connection. use this character set for this connection.
One should use @code{mysql_real_escape_string()} when escaping strings One should use @code{mysql_real_escape_string()} when escaping strings
for a SQL query. @code{mysql_real_escape_string()} is identical to the for an SQL query. @code{mysql_real_escape_string()} is identical to the
old @code{mysql_escape_string()} function, except that it takes the MYSQL old @code{mysql_escape_string()} function, except that it takes the MYSQL
connection handle as the first parameter. connection handle as the first parameter.
...@@ -24732,8 +24735,8 @@ the size in bytes of the largest character in the set. ...@@ -24732,8 +24735,8 @@ the size in bytes of the largest character in the set.
@section How big MySQL tables can be @section How big MySQL tables can be
@strong{MySQL} 3.22 has a 4G limit on table size. With the new @strong{MySQL} 3.22 has a 4G limit on table size. With the new
@code{MyISAM} in @strong{MySQL} 3.23 the maximum table size is pushed up @code{MyISAM} in @strong{MySQL} Version 3.23 the maximum table size is
to 8 million terabytes (2 ^ 63 bytes). pushed up to 8 million terabytes (2 ^ 63 bytes).
Note however that operating systems have their own file size Note however that operating systems have their own file size
limits. Here are some examples: limits. Here are some examples:
...@@ -24804,7 +24807,7 @@ sending a part of the non-updating queries to the replica server. Of ...@@ -24804,7 +24807,7 @@ sending a part of the non-updating queries to the replica server. Of
course this only works if non-updating queries dominate, but that is the course this only works if non-updating queries dominate, but that is the
normal case. normal case.
Starting in 3.23.15, @strong{MySQL} supports one-way replication Starting in Version 3.23.15, @strong{MySQL} supports one-way replication
internally. One server acts as the master, while the other acts as the internally. One server acts as the master, while the other acts as the
slave. Note that one server could play the roles of master in one pair slave. Note that one server could play the roles of master in one pair
and slave in the other. The master server keeps a binary log of updates and slave in the other. The master server keeps a binary log of updates
...@@ -24843,9 +24846,9 @@ system: ...@@ -24843,9 +24846,9 @@ system:
@itemize @bullet @itemize @bullet
@item @item
Upgrade both slave and master to 3.23.15 or higher. We recommend that Upgrade both slave and master to Version 3.23.15 or higher. We recommend that
you always use the latest 3.23 version on both the slave and the you always use the latest 3.23 version on both the slave and the
master. While 3.23 is in beta, the versions may be not backwards master. While Version 3.23 is in beta, the versions may be not backwards
compatible. In addition, the newer version will fix some bugs and add compatible. In addition, the newer version will fix some bugs and add
new features. Please, do not report bugs until you have verified that new features. Please, do not report bugs until you have verified that
the problem is present in the latest release. the problem is present in the latest release.
...@@ -24856,9 +24859,9 @@ only doing replication, you don't need to grant him other privileges. ...@@ -24856,9 +24859,9 @@ only doing replication, you don't need to grant him other privileges.
@item @item
Take a snapshot of all the tables/databases on the master that could Take a snapshot of all the tables/databases on the master that could
possibly be involved in the update queries before taking the next step. possibly be involved in the update queries before taking the next step.
Starting in version 3.23.21, there is a command that allows you to Starting in Version 3.23.21, there is a command that allows you to
take a snapshot of a table on the master and copy it to the slave, called take a snapshot of a table on the master and copy it to the slave, called
@code{LOAD TABLE FROM MASTER}. Until 3.23.23, though, it has a serious @code{LOAD TABLE FROM MASTER}. Until Version 3.23.23, though, it has a serious
bug, and we recommend that you should not use it until you have upgraded . bug, and we recommend that you should not use it until you have upgraded .
@item @item
...@@ -24879,7 +24882,7 @@ master-password=<replication user password> ...@@ -24879,7 +24882,7 @@ master-password=<replication user password>
replacting the values in <> with what is relevant to your system. replacting the values in <> with what is relevant to your system.
Starting in version 3.23.26, you must also have on both master and Starting in Version 3.23.26, you must also have on both master and
slave slave
@example @example
...@@ -24920,20 +24923,20 @@ Temporary tables will not work if the table with the same name ...@@ -24920,20 +24923,20 @@ Temporary tables will not work if the table with the same name
now the only thing you can do is turn off logging of the trouble now the only thing you can do is turn off logging of the trouble
queries with @code{SET SQL_LOG_BIN=0} queries with @code{SET SQL_LOG_BIN=0}
@item @item
Starting in 3.23.26, it is safe to connect servers in a circular Starting in Version 3.23.26, it is safe to connect servers in a circular
master-slave relationship with @code{log-slave-updates} enabled. master-slave relationship with @code{log-slave-updates} enabled.
Note, however, that many queries will not work right in this kind of Note, however, that many queries will not work right in this kind of
setup unless your client code is written to take care of the potential setup unless your client code is written to take care of the potential
problems that can happen from updates that occur in different sequence problems that can happen from updates that occur in different sequence
on different servers. Note that the log format has changed in 3.23.26 on different servers. Note that the log format has changed in Version 3.23.26
so that pre-3.23.26 slaves will not be able to read it. so that pre-3.23.26 slaves will not be able to read it.
@item @item
If the query on the slave gets an error, the slave thread will If the query on the slave gets an error, the slave thread will
terminate, and a message will appear in @code{.err} file. You should terminate, and a message will appear in @code{.err} file. You should
then connect to the slave manually, fix the cause of the error then connect to the slave manually, fix the cause of the error
(eg. non-existent table), and then run @code{SLAVE START} sql command ( (eg. non-existent table), and then run @code{SLAVE START} sql command (
available starting in 3.23.16, in 3.23.15 you will have to restart the available starting in Version 3.23.16, in Version, 3.23.15 you will have
server). to restart the server).
@item @item
If connection to the master is lost, the slave will retry immediately, If connection to the master is lost, the slave will retry immediately,
and then in case of failure every @code{master-connect-retry} (default and then in case of failure every @code{master-connect-retry} (default
...@@ -24949,40 +24952,41 @@ tolerance will be greatly increased if you have a good UPS. ...@@ -24949,40 +24952,41 @@ tolerance will be greatly increased if you have a good UPS.
If the master is listening on a non-standard port, you will also need to If the master is listening on a non-standard port, you will also need to
specify this with @code{master-port} parameter in @code{my.cnf} . specify this with @code{master-port} parameter in @code{my.cnf} .
@item @item
In 3.23.15,all of the tables and databases will be replicated. Starting In Version 3.23.15, all of the tables and databases will be
in 3.23.16, you can restrict replication to a set of databases with replicated. Starting in Version 3.23.16, you can restrict replication to
@code{replicate-do-db} directives in @code{my.cnf} or just excluse a set a set of databases with @code{replicate-do-db} directives in
of databases with @code{replicate-ignore-db}. Note that up until @code{my.cnf} or just excluse a set of databases with
3.23.23 there was a bug that did not properly deal with @code{LOAD DATA @code{replicate-ignore-db}. Note that up until Version 3.23.23 there was a bug
INFILE} if you did it in a database that was excluded from replication. that did not properly deal with @code{LOAD DATA INFILE} if you did it in
a database that was excluded from replication.
@item @item
Starting in 3.23.16, @code{SET SQL_LOG_BIN = 0} will turn off Starting in Version 3.23.16, @code{SET SQL_LOG_BIN = 0} will turn off
replication (binary) logging on the master, and @code{SET SQL_LOG_BIN = replication (binary) logging on the master, and @code{SET SQL_LOG_BIN =
1} will turn in back on - you must have the process privilege to do 1} will turn in back on - you must have the process privilege to do
this. this.
@item @item
Starting in 3.23.19 you can clean up stale replication leftovers when Starting in Version 3.23.19 you can clean up stale replication leftovers when
something goes wrong and you want a clean start with @code{FLUSH MASTER} something goes wrong and you want a clean start with @code{FLUSH MASTER}
and @code{FLUSH SLAVE} commands. In 3.23.26 we have renamed them to and @code{FLUSH SLAVE} commands. In Version 3.23.26 we have renamed them to
@code{RESET MASTER} and @code{RESET SLAVE} respectively to clarify @code{RESET MASTER} and @code{RESET SLAVE} respectively to clarify
what they do. The old @code{FLUSH} variants still work, though for what they do. The old @code{FLUSH} variants still work, though for
compatibility. compatibility.
@item @item
Starting in 3.23.21 you can use LOAD TABLE FROM MASTER for network Starting in Version 3.23.21 you can use LOAD TABLE FROM MASTER for network
backup and to set up replication initially. backup and to set up replication initially.
@item @item
Starting in 3.23.23, you can change masters with @code{CHANGE MASTER Starting in Version 3.23.23, you can change masters with @code{CHANGE MASTER
TO } TO }
@item @item
Starting in 3.23.23, you tell the master that updates in certain Starting in Version 3.23.23, you tell the master that updates in certain
databases should not be logged to the binary log with @code{binlog-ignore-db} databases should not be logged to the binary log with @code{binlog-ignore-db}
@item @item
Starting in 3.23.26, you can use @code{replicate-rewrite-db} to tell Starting in Version 3.23.26, you can use @code{replicate-rewrite-db} to tell
the slave to apply updates from one database on the master to the one the slave to apply updates from one database on the master to the one
with a different name on the slave with a different name on the slave
@item @item
Starting in 3.23.28, you can use @code{PURGE MASTER LOGS TO 'log-name'} Starting in Version 3.23.28, you can use @code{PURGE MASTER LOGS TO 'log-name'}
to get rid of old logs while the slave is running to get rid of old logs while the slave is running
@end itemize @end itemize
...@@ -24990,7 +24994,7 @@ to get rid of old logs while the slave is running ...@@ -24990,7 +24994,7 @@ to get rid of old logs while the slave is running
@section Replication Options in my.cnf @section Replication Options in my.cnf
The table below explains the replications options in @code{my.cnf} . All The table below explains the replications options in @code{my.cnf} . All
of the are available starting in 3.23.15 unless indicated otherwise. of the are available starting in Version 3.23.15 unless indicated otherwise.
@multitable @columnfractions .3 .7 @multitable @columnfractions .3 .7
...@@ -25003,9 +25007,9 @@ location. Note that if you give it a parameter with an extention ...@@ -25003,9 +25007,9 @@ location. Note that if you give it a parameter with an extention
(eg. @code{log-bin=/mysql/logs/replication.log} ) versions up to (eg. @code{log-bin=/mysql/logs/replication.log} ) versions up to
3.23.24 will not work right during replication if you do 3.23.24 will not work right during replication if you do
@code{FLUSH LOGS} . The problem is fixed @code{FLUSH LOGS} . The problem is fixed
in 3.23.25. If you are using this kind of log name, @code{FLUSH LOGS} in Version 3.23.25. If you are using this kind of log name, @code{FLUSH LOGS}
will be ignored on binlog. To clear the log, run @code{FLUSH MASTER}, will be ignored on binlog. To clear the log, run @code{FLUSH MASTER},
and do not forget to run @code{FLUSH SLAVE} on all slaves. In 3.23.26 and do not forget to run @code{FLUSH SLAVE} on all slaves. In Version 3.23.26
and later versions you should use @code{RESET MASTER} and @code{RESET and later versions you should use @code{RESET MASTER} and @code{RESET
SLAVE} SLAVE}
...@@ -25192,11 +25196,11 @@ command line. (Slave) ...@@ -25192,11 +25196,11 @@ command line. (Slave)
@item @code{SHOW SLAVE STATUS} @item @code{SHOW SLAVE STATUS}
@tab Provides status info on essential parameters of the slave thread. (Slave) @tab Provides status info on essential parameters of the slave thread. (Slave)
@item @code{SHOW MASTER LOGS} @item @code{SHOW MASTER LOGS}
@tab Only available starting in 3.23.28. Lists the binary logs on the master. You should use this command @tab Only available starting in Version 3.23.28. Lists the binary logs on the master. You should use this command
prior to @code{PURGE MASTER LOGS TO} to find out how far you should go. prior to @code{PURGE MASTER LOGS TO} to find out how far you should go.
@item @code{PURGE MASTER LOGS TO 'logname'} @item @code{PURGE MASTER LOGS TO 'logname'}
@tab Available starting in 3.23.28. Deletes all the @tab Available starting in Version 3.23.28. Deletes all the
replication logs that are listed in the log replication logs that are listed in the log
index as being prior to the specified log, and removed them from the index as being prior to the specified log, and removed them from the
log index, so that the given log now becomes first. Example: log index, so that the given log now becomes first. Example:
...@@ -25253,14 +25257,14 @@ it up from @code{pthread_cond_wait()}. In the meantime, the slave ...@@ -25253,14 +25257,14 @@ it up from @code{pthread_cond_wait()}. In the meantime, the slave
could have opened another connection, which resulted in another could have opened another connection, which resulted in another
@code{Binlog_Dump} thread. @code{Binlog_Dump} thread.
The above problem should not be present in 3.23.26 and later versions. The above problem should not be present in Version 3.23.26 and later versions.
In 3.23.26 we added @code{server-id} to each replication server, and In Version 3.23.26 we added @code{server-id} to each replication server, and
now all the old zombie threads are killed on the master when a new replication thread now all the old zombie threads are killed on the master when a new replication thread
connects from the same slave connects from the same slave
@strong{Q}: How do I rotate replication logs? @strong{Q}: How do I rotate replication logs?
@strong{A}: In 3.23.28 you should use @code{PURGE MASTER LOGS TO} @strong{A}: In Version 3.23.28 you should use @code{PURGE MASTER LOGS TO}
command after determining which logs can be deleted, and optionally command after determining which logs can be deleted, and optionally
backing them up first. In earlier versions the process is much more backing them up first. In earlier versions the process is much more
painful, and cannot be safely done without stopping all the slaves in painful, and cannot be safely done without stopping all the slaves in
...@@ -25281,7 +25285,7 @@ all the updates, the slave will be able to catch up once it is up and ...@@ -25281,7 +25285,7 @@ all the updates, the slave will be able to catch up once it is up and
can connect. can connect.
We plan to make post 3.23.26 versions to be backwards compatible We plan to make post 3.23.26 versions to be backwards compatible
for replication down to 3.23.26, so upgrade should be just a matter for replication down to Version 3.23.26, so upgrade should be just a matter
of plug and play. Of course, as one joke goes, plug and play works of plug and play. Of course, as one joke goes, plug and play works
usually only 50% of the time - just the plug part. We hope to do much usually only 50% of the time - just the plug part. We hope to do much
better than that, though. better than that, though.
...@@ -26206,7 +26210,7 @@ For @code{BDB} tables, @strong{MySQL} only uses table locking of you ...@@ -26206,7 +26210,7 @@ For @code{BDB} tables, @strong{MySQL} only uses table locking of you
explicitely lock the table with @code{LOCK TABLES} or execute an command that explicitely lock the table with @code{LOCK TABLES} or execute an command that
will modify every row in the table, like @code{ALTER TABLE}. will modify every row in the table, like @code{ALTER TABLE}.
In @strong{MySQL} 3.23.7 and above, you can insert rows into In @strong{MySQL} Version 3.23.7 and above, you can insert rows into
@code{MyISAM} tables at the same time as other threads are reading from @code{MyISAM} tables at the same time as other threads are reading from
the table. Note that currently this only works if there are no holes after the table. Note that currently this only works if there are no holes after
deleted rows in the table at the time the insert is made. deleted rows in the table at the time the insert is made.
...@@ -26224,7 +26228,7 @@ queries against a specific table. (You can change this by using ...@@ -26224,7 +26228,7 @@ queries against a specific table. (You can change this by using
LOW_PRIORITY with the statement that does the update or LOW_PRIORITY with the statement that does the update or
@code{HIGH_PRIORITY} with the @code{SELECT} statement. @code{HIGH_PRIORITY} with the @code{SELECT} statement.
Starting from @strong{MySQL 3.23.7} one can use the Starting from @strong{MySQL Version 3.23.7} one can use the
@code{max_write_lock_count} variable to force @strong{MySQL} to @code{max_write_lock_count} variable to force @strong{MySQL} to
temporary give all @code{SELECT} statements, that waits for a table, a temporary give all @code{SELECT} statements, that waits for a table, a
higher priority after a specific number of inserts on a table. higher priority after a specific number of inserts on a table.
...@@ -26394,7 +26398,7 @@ SELECT MIN(key_part2),MAX(key_part2) FROM table_name where key_part1=10 ...@@ -26394,7 +26398,7 @@ SELECT MIN(key_part2),MAX(key_part2) FROM table_name where key_part1=10
@item @item
Sort or group a table if the sorting or grouping is done on a leftmost Sort or group a table if the sorting or grouping is done on a leftmost
prefix of a usable key (e.g., @code{ORDER BY key_part_1,key_part_2 }). The prefix of a usable key (for example, @code{ORDER BY key_part_1,key_part_2 }). The
key is read in reverse order if all key parts are followed by @code{DESC}. key is read in reverse order if all key parts are followed by @code{DESC}.
The index can also be used even if the @code{ORDER BY} doesn't match gthe index The index can also be used even if the @code{ORDER BY} doesn't match gthe index
...@@ -26460,7 +26464,7 @@ leftmost prefixes of @code{(col1,col2,col3)}. ...@@ -26460,7 +26464,7 @@ leftmost prefixes of @code{(col1,col2,col3)}.
@cindex indexes, and @code{LIKE} @cindex indexes, and @code{LIKE}
@cindex wildcards, and @code{LIKE} @cindex wildcards, and @code{LIKE}
@strong{MySQL} also uses indexes for @code{LIKE} comparisons if the argument @strong{MySQL} also uses indexes for @code{LIKE} comparisons if the argument
to @code{LIKE} is a constant string that doesn't start with a wild card to @code{LIKE} is a constant string that doesn't start with a wild-card
character. For example, the following @code{SELECT} statements use indexes: character. For example, the following @code{SELECT} statements use indexes:
@example @example
...@@ -26478,8 +26482,9 @@ mysql> select * from tbl_name where key_col LIKE "%Patrick%"; ...@@ -26478,8 +26482,9 @@ mysql> select * from tbl_name where key_col LIKE "%Patrick%";
mysql> select * from tbl_name where key_col LIKE other_col; mysql> select * from tbl_name where key_col LIKE other_col;
@end example @end example
In the first statement, the @code{LIKE} value begins with a wildcard character. In the first statement, the @code{LIKE} value begins with a wild-card
In the second statement, the @code{LIKE} value is not a constant. character. In the second statement, the @code{LIKE} value is not a
constant.
@findex IS NULL, and indexes @findex IS NULL, and indexes
@cindex indexes, and @code{IS NULL} @cindex indexes, and @code{IS NULL}
...@@ -26489,7 +26494,7 @@ is an index. ...@@ -26489,7 +26494,7 @@ is an index.
@strong{MySQL} normally uses the index that finds least number of rows. An @strong{MySQL} normally uses the index that finds least number of rows. An
index is used for columns that you compare with the following operators: index is used for columns that you compare with the following operators:
@code{=}, @code{>}, @code{>=}, @code{<}, @code{<=}, @code{BETWEEN} and a @code{=}, @code{>}, @code{>=}, @code{<}, @code{<=}, @code{BETWEEN} and a
@code{LIKE} with a non-wildcard prefix like @code{'something%'}. @code{LIKE} with a non-wild-card prefix like @code{'something%'}.
Any index that doesn't span all @code{AND} levels in the @code{WHERE} clause Any index that doesn't span all @code{AND} levels in the @code{WHERE} clause
is not used to optimize the query. In other words: To be able to use an is not used to optimize the query. In other words: To be able to use an
...@@ -27172,7 +27177,7 @@ information about the last shown banner for users that doesn't have ...@@ -27172,7 +27177,7 @@ information about the last shown banner for users that doesn't have
cookies). cookies).
@item @item
Columns with identical information in different tables should be Columns with identical information in different tables should be
declared identical and have identical names. Before version 3.23 you declared identical and have identical names. Before Version 3.23 you
got slow joins otherwise. got slow joins otherwise.
Try to keep the names simple (use @code{name} instead of Try to keep the names simple (use @code{name} instead of
...@@ -27397,7 +27402,7 @@ results. We would have used PHP or mod_perl instead but they were ...@@ -27397,7 +27402,7 @@ results. We would have used PHP or mod_perl instead but they were
not available at that time. not available at that time.
For graphical data we wrote a simple tool in @code{C} that can produce For graphical data we wrote a simple tool in @code{C} that can produce
GIFs based on the result of a SQL query (with some processing of the GIFs based on the result of an SQL query (with some processing of the
result). This is also dynamically executed from the Perl script that result). This is also dynamically executed from the Perl script that
parses the @code{HTML} files. parses the @code{HTML} files.
...@@ -27420,7 +27425,7 @@ our systems. ...@@ -27420,7 +27425,7 @@ our systems.
We are also experimenting with Intel-Linux to be able to get more CPU We are also experimenting with Intel-Linux to be able to get more CPU
power cheaper. Now that we have the binary portable database format (new power cheaper. Now that we have the binary portable database format (new
in 3.23) we will start to use this for some parts of the application. in Version 3.23) we will start to use this for some parts of the application.
Our initial feelings are that Linux will perform much better on low to Our initial feelings are that Linux will perform much better on low to
medium load but Solaris will perform better when you start to get a medium load but Solaris will perform better when you start to get a
...@@ -27656,7 +27661,7 @@ to a log file. ...@@ -27656,7 +27661,7 @@ to a log file.
@code{mysql} is a simple SQL shell (with GNU @code{readline} capabilities). @code{mysql} is a simple SQL shell (with GNU @code{readline} capabilities).
It supports interactive and non-interactive use. When used interactively, It supports interactive and non-interactive use. When used interactively,
query results are presented in an ASCII-table format. When used query results are presented in an ASCII-table format. When used
non-interactively (e.g., as a filter), the result is presented in non-interactively (for example, as a filter), the result is presented in
tab-separated format. (The output format can be changed using command-line tab-separated format. (The output format can be changed using command-line
options.) You can run scripts simply like this: options.) You can run scripts simply like this:
...@@ -27670,7 +27675,7 @@ If you have problems due to insufficient memory in the client, use the ...@@ -27670,7 +27675,7 @@ If you have problems due to insufficient memory in the client, use the
retrieve the result set. retrieve the result set.
Using @code{mysql} is very easy; Just start it as follows Using @code{mysql} is very easy; Just start it as follows
@code{mysql database} or @code{mysql --user=user_name --password=your_password database}. Type a SQL statement, end it with @samp{;}, @samp{\g} or @samp{\G} @code{mysql database} or @code{mysql --user=user_name --password=your_password database}. Type an SQL statement, end it with @samp{;}, @samp{\g} or @samp{\G}
and press return/enter. and press return/enter.
@cindex command line options @cindex command line options
...@@ -27817,7 +27822,7 @@ ego (\G) Send command to mysql server; Display result vertically ...@@ -27817,7 +27822,7 @@ ego (\G) Send command to mysql server; Display result vertically
print (\p) Print current command print (\p) Print current command
quit (\q) Quit mysql quit (\q) Quit mysql
rehash (\#) Rebuild completion hash rehash (\#) Rebuild completion hash
source (\.) Execute a SQL script file. Takes a file name as an argument source (\.) Execute an SQL script file. Takes a file name as an argument
status (\s) Get status information from the server status (\s) Get status information from the server
use (\u) Use another database. Takes database name as argument use (\u) Use another database. Takes database name as argument
@end example @end example
...@@ -27829,7 +27834,7 @@ connection and the server you are using. If you are running in the ...@@ -27829,7 +27834,7 @@ connection and the server you are using. If you are running in the
the @code{mysql} variables that affects your queries. the @code{mysql} variables that affects your queries.
@cindex @code{safe-mode} command @cindex @code{safe-mode} command
A useful startup option for beginners (introduced in @strong{MySQL} 3.23.11) is A useful startup option for beginners (introduced in @strong{MySQL} Version 3.23.11) is
@code{--safe-mode} (or @code{--i-am-a-dummy} for users that has at some @code{--safe-mode} (or @code{--i-am-a-dummy} for users that has at some
time done a @code{DELETE FROM table_name} but forgot the @code{WHERE} time done a @code{DELETE FROM table_name} but forgot the @code{WHERE}
clause. When using this option, @code{mysql} sends the following clause. When using this option, @code{mysql} sends the following
...@@ -28018,7 +28023,7 @@ meaning as the corresponding clauses for @code{LOAD DATA INFILE}. ...@@ -28018,7 +28023,7 @@ meaning as the corresponding clauses for @code{LOAD DATA INFILE}.
@item -F, --flush-logs @item -F, --flush-logs
Flush log file in the @strong{MySQL} server before starting the dump. Flush log file in the @strong{MySQL} server before starting the dump.
@item -f, --force, @item -f, --force,
Continue even if we get a SQL error during a table dump. Continue even if we get an SQL error during a table dump.
@item -h, --host=.. @item -h, --host=..
Dump data from the @strong{MySQL} server on the named host. The default host Dump data from the @strong{MySQL} server on the named host. The default host
is @code{localhost}. is @code{localhost}.
...@@ -28298,8 +28303,8 @@ are shown. ...@@ -28298,8 +28303,8 @@ are shown.
Note that in newer @strong{MySQL} versions you only see those Note that in newer @strong{MySQL} versions you only see those
database/tables/columns for which you have some privileges. database/tables/columns for which you have some privileges.
If the last argument contains a shell or SQL wildcard (@code{*}, @code{?}, If the last argument contains a shell or SQL wild-card (@code{*}, @code{?},
@code{%} or @code{_}) then only what's matched by the wildcard is shown. @code{%} or @code{_}) then only what's matched by the wild card is shown.
This may cause some confusion when you try to display the columns for a This may cause some confusion when you try to display the columns for a
table with a @code{_} as in this case @code{mysqlshow} only shows you table with a @code{_} as in this case @code{mysqlshow} only shows you
the table names that matches the pattern. This is easily fixed by the table names that matches the pattern. This is easily fixed by
...@@ -28706,7 +28711,7 @@ to start using the new table. ...@@ -28706,7 +28711,7 @@ to start using the new table.
@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
Starting with @strong{MySQL} 3.23.13, you can check MyISAM tables with the Starting with @strong{MySQL} Version 3.23.13, you can check MyISAM tables with the
@code{CHECK TABLE} command. @xref{CHECK TABLE}. You can repair tables @code{CHECK TABLE} command. @xref{CHECK TABLE}. You can repair tables
with the @code{REPAIR TABLE} command. @xref{REPAIR TABLE}. with the @code{REPAIR TABLE} command. @xref{REPAIR TABLE}.
...@@ -28777,7 +28782,7 @@ by specifying the path to the directory: ...@@ -28777,7 +28782,7 @@ by specifying the path to the directory:
shell> myisamchk /path/to/database_dir/*.MYI shell> myisamchk /path/to/database_dir/*.MYI
@end example @end example
You can even check all tables in all databases by specifying a wildcard You can even check all tables in all databases by specifying a wild card
with the path to the @strong{MySQL} data directory: with the path to the @strong{MySQL} data directory:
@example @example
...@@ -28805,7 +28810,7 @@ the file or that has died without closing the file properly. ...@@ -28805,7 +28810,7 @@ the file or that has died without closing the file properly.
If you @code{mysqld} is running, you must force a sync/close of all If you @code{mysqld} is running, you must force a sync/close of all
tables with @code{FLUSH TABLES} and ensure that no one is using the tables with @code{FLUSH TABLES} and ensure that no one is using the
tables while you are running @code{myisamchk}. In MySQL 3.23 the easiest tables while you are running @code{myisamchk}. In MySQL Version 3.23 the easiest
way to avoid this problem is to use @code{CHECK TABLE} instead of way to avoid this problem is to use @code{CHECK TABLE} instead of
@code{myisamchk} to check tables. @code{myisamchk} to check tables.
...@@ -29043,7 +29048,7 @@ If you have a problem with disk space during repair, you can try to use ...@@ -29043,7 +29048,7 @@ If you have a problem with disk space during repair, you can try to use
@node Maintenance regimen, Table-info, Table maintenance, Maintenance @node Maintenance regimen, Table-info, Table maintenance, Maintenance
@section Setting up a table maintenance regimen @section Setting up a table maintenance regimen
Starting with @strong{MySQL} 3.23.13, you can check MyISAM tables with the Starting with @strong{MySQL} Version 3.23.13, you can check MyISAM tables with the
@code{CHECK TABLE} command. @xref{CHECK TABLE}. You can repair tables @code{CHECK TABLE} command. @xref{CHECK TABLE}. You can repair tables
with the @code{REPAIR TABLE} command. @xref{REPAIR TABLE}. with the @code{REPAIR TABLE} command. @xref{REPAIR TABLE}.
...@@ -29578,7 +29583,7 @@ that @code{mysqld} runs as (and to you, because you need to access the files ...@@ -29578,7 +29583,7 @@ that @code{mysqld} runs as (and to you, because you need to access the files
you are checking). If it turns out you need to modify files, they must also you are checking). If it turns out you need to modify files, they must also
be writable by you. be writable by you.
If you are using @strong{MySQL} 3.23.16 and above you can (and should) use the If you are using @strong{MySQL} Version 3.23.16 and above you can (and should) use the
@code{CHECK} and @code{REPAIR} commands to check and repair @code{MyISAM} @code{CHECK} and @code{REPAIR} commands to check and repair @code{MyISAM}
tables. @xref{CHECK TABLE}. @xref{REPAIR TABLE}. tables. @xref{CHECK TABLE}. @xref{REPAIR TABLE}.
...@@ -29837,7 +29842,7 @@ functions. Consult this file to see how UDF calling conventions work. ...@@ -29837,7 +29842,7 @@ functions. Consult this file to see how UDF calling conventions work.
For each function that you want to use in SQL statements, you should define For each function that you want to use in SQL statements, you should define
corresponding C (or C++) functions. In the discussion below, the name corresponding C (or C++) functions. In the discussion below, the name
``xxx'' is used for an example function name. To distinquish between SQL and ``xxx'' is used for an example function name. To distinquish between SQL and
C/C++ usage, @code{XXX()} (uppercase) indicates a SQL function call, and C/C++ usage, @code{XXX()} (uppercase) indicates an SQL function call, and
@code{xxx()} (lowercase) indicates a C/C++ function call. @code{xxx()} (lowercase) indicates a C/C++ function call.
The C/C++ functions that you write to implement the inferface for The C/C++ functions that you write to implement the inferface for
...@@ -29881,7 +29886,7 @@ The deinitialization function for @code{xxx()}. It should deallocate any ...@@ -29881,7 +29886,7 @@ The deinitialization function for @code{xxx()}. It should deallocate any
memory allocated by the initialization function. memory allocated by the initialization function.
@end table @end table
When a SQL statement invokes @code{XXX()}, @strong{MySQL} calls the When an SQL statement invokes @code{XXX()}, @strong{MySQL} calls the
initialization function @code{xxx_init()} to let it perform any required initialization function @code{xxx_init()} to let it perform any required
setup, such as argument checking or memory allocation. If @code{xxx_init()} setup, such as argument checking or memory allocation. If @code{xxx_init()}
returns an error, the SQL statement is aborted with an error message and the returns an error, the SQL statement is aborted with an error message and the
...@@ -30245,7 +30250,7 @@ The procedure for adding a new native function is described below. Note that ...@@ -30245,7 +30250,7 @@ The procedure for adding a new native function is described below. Note that
you cannot add native functions to a binary distribution because the procedure you cannot add native functions to a binary distribution because the procedure
involves modifying @strong{MySQL} source code. You must compile involves modifying @strong{MySQL} source code. You must compile
@strong{MySQL} yourself from a source distribution. Also note that if you @strong{MySQL} yourself from a source distribution. Also note that if you
migrate to another version of @strong{MySQL} (e.g., when a new version is migrate to another version of @strong{MySQL} (for example, when a new version is
released), you will need to repeat the procedure with the new version. released), you will need to repeat the procedure with the new version.
To add a new native @strong{MySQL} function, follow these steps: To add a new native @strong{MySQL} function, follow these steps:
...@@ -30310,7 +30315,7 @@ In @strong{MySQL}, you can define a procedure in C++ that can access and ...@@ -30310,7 +30315,7 @@ In @strong{MySQL}, you can define a procedure in C++ that can access and
modify the data in a query before it is sent to the client. The modification modify the data in a query before it is sent to the client. The modification
can be done on row by row or @code{GROUP BY} level. can be done on row by row or @code{GROUP BY} level.
We have created an example procedure in @strong{MySQL} 3.23 to We have created an example procedure in @strong{MySQL} Version 3.23 to
show you what can be done. show you what can be done.
@menu @menu
...@@ -30553,7 +30558,7 @@ Microsoft MDAC (@code{Microsoft Data Access Components}) from ...@@ -30553,7 +30558,7 @@ Microsoft MDAC (@code{Microsoft Data Access Components}) from
@uref{http://www.microsoft.com/data}. This will fix the bug in Access @uref{http://www.microsoft.com/data}. This will fix the bug in Access
that when you export data to @strong{MySQL}, the table and column names that when you export data to @strong{MySQL}, the table and column names
aren't specified. Another way to around this bug is to upgrade to aren't specified. Another way to around this bug is to upgrade to
MyODBC 2.50.33 and @strong{MySQL} 3.23.x, which together provides a MyODBC Version 2.50.33 and @strong{MySQL} Version 3.23.x, which together provides a
workaround for this bug! workaround for this bug!
Note that if you are using @strong{MySQL} 3.22, you must to apply the Note that if you are using @strong{MySQL} 3.22, you must to apply the
...@@ -31399,7 +31404,7 @@ shell> mysqladmin -h `hostname` version ...@@ -31399,7 +31404,7 @@ shell> mysqladmin -h `hostname` version
@end example @end example
@item Someone has removed the Unix socket that @code{mysqld} uses (default @item Someone has removed the Unix socket that @code{mysqld} uses (default
@file{/tmp/mysqld.sock}). You might have a @code{cron} job that removes the @file{/tmp/mysqld.sock}). You might have a @code{cron} job that removes the
@strong{MySQL} socket (e.g., a job that removes old files from the @file{/tmp} @strong{MySQL} socket (for example, a job that removes old files from the @file{/tmp}
directory). You can always run @code{mysqladmin version} and directory). You can always run @code{mysqladmin version} and
check that the socket @code{mysqladmin} is trying to use really exists. check that the socket @code{mysqladmin} is trying to use really exists.
The fix in this case is to change the @code{cron} job to not remove The fix in this case is to change the @code{cron} job to not remove
...@@ -31588,7 +31593,7 @@ query. @xref{SET OPTION, , @code{SET OPTION}}. ...@@ -31588,7 +31593,7 @@ query. @xref{SET OPTION, , @code{SET OPTION}}.
You can also start @code{mysqld} with the @code{--big-tables} option. You can also start @code{mysqld} with the @code{--big-tables} option.
This is exactly the same as using @code{SQL_BIG_TABLES} for all queries. This is exactly the same as using @code{SQL_BIG_TABLES} for all queries.
In @strong{MySQL} 3.23 in-memory temporary tables will automaticly be In @strong{MySQL} Version 3.23 in-memory temporary tables will automatically be
converted to a disk based @code{MyISAM} table after the table size gets converted to a disk based @code{MyISAM} table after the table size gets
bigger than @code{tmp_table_size}. bigger than @code{tmp_table_size}.
...@@ -31942,7 +31947,7 @@ shell> /path/to/safe_mysqld & ...@@ -31942,7 +31947,7 @@ shell> /path/to/safe_mysqld &
@tindex Environment variable, UMASK_DIR @tindex Environment variable, UMASK_DIR
By default @strong{MySQL} will create database and @code{RAID} By default @strong{MySQL} will create database and @code{RAID}
directories with permission type 0700. You can modify this behaviour by directories with permission type 0700. You can modify this behaviour by
setting the the @code{UMASK_DIR} variable. If you set this, new setting the @code{UMASK_DIR} variable. If you set this, new
directories are created with the combined @code{UMASK} and directories are created with the combined @code{UMASK} and
@code{UMASK_DIR}. For example, if you want to give group access to @code{UMASK_DIR}. For example, if you want to give group access to
all new directories, you can do: all new directories, you can do:
...@@ -31953,7 +31958,7 @@ shell> export UMASK_DIR ...@@ -31953,7 +31958,7 @@ shell> export UMASK_DIR
shell> /path/to/safe_mysqld & shell> /path/to/safe_mysqld &
@end example @end example
In @strong{MySQL} 3.23.25 and above, @strong{MySQL} assumes that the In @strong{MySQL} Version 3.23.25 and above, @strong{MySQL} assumes that the
value for @code{UMASK} and @code{UMASK_DIR} is in octal if it starts value for @code{UMASK} and @code{UMASK_DIR} is in octal if it starts
with a zero. with a zero.
...@@ -32393,7 +32398,7 @@ Drop or rename @code{old_table} ...@@ -32393,7 +32398,7 @@ Drop or rename @code{old_table}
@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
3.23.15, this is the recommended way. @xref{Replication}. Version 3.23.15, this is the recommended way. @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. @xref{Update log}. This requires one database that acts as a update log. @xref{Update log}. This requires one database that acts as a
...@@ -32439,7 +32444,7 @@ backup. To get a consistent backup, do a @code{LOCK TABLES} on the ...@@ -32439,7 +32444,7 @@ backup. To get a consistent backup, do a @code{LOCK TABLES} on the
relevant tables. @xref{LOCK TABLES, , @code{LOCK TABLES}}. You only need a relevant tables. @xref{LOCK TABLES, , @code{LOCK TABLES}}. You only need a
read lock; this allows other threads to continue to query the tables while read lock; this allows other threads to continue to query the tables while
you are making a copy of the files in the database directory. If you want to you are making a copy of the files in the database directory. If you want to
make a SQL level backup of a table, you can use @code{SELECT INTO OUTFILE}. make an SQL level backup of a table, you can use @code{SELECT INTO OUTFILE}.
Another way to backup a database is to use the @code{mysqldump} program: Another way to backup a database is to use the @code{mysqldump} program:
@xref{mysqldump}. @xref{mysqldump}.
...@@ -33011,11 +33016,11 @@ Returns the error number for the most recently invoked @strong{MySQL} function. ...@@ -33011,11 +33016,11 @@ Returns the error number for the most recently invoked @strong{MySQL} function.
Returns the error message for the most recently invoked @strong{MySQL} function. Returns the error message for the most recently invoked @strong{MySQL} function.
@item @strong{mysql_real_escape_string()} @tab @item @strong{mysql_real_escape_string()} @tab
Escapes special characters in a string for use in a SQL statement taking Escapes special characters in a string for use in an SQL statement taking
into account the current charset of the connection. into account the current charset of the connection.
@item @strong{mysql_escape_string()} @tab @item @strong{mysql_escape_string()} @tab
Escapes special characters in a string for use in a SQL statement. Escapes special characters in a string for use in an SQL statement.
@item @strong{mysql_fetch_field()} @tab @item @strong{mysql_fetch_field()} @tab
Returns the type of the next table field. Returns the type of the next table field.
...@@ -33096,13 +33101,13 @@ Checks whether or not the connection to the server is working, reconnecting ...@@ -33096,13 +33101,13 @@ Checks whether or not the connection to the server is working, reconnecting
as necessary. as necessary.
@item @strong{mysql_query()} @tab @item @strong{mysql_query()} @tab
Executes a SQL query specified as a null-terminated string. Executes an SQL query specified as a null-terminated string.
@item @strong{mysql_real_connect()} @tab @item @strong{mysql_real_connect()} @tab
Connects to a @strong{MySQL} server. Connects to a @strong{MySQL} server.
@item @strong{mysql_real_query()} @tab @item @strong{mysql_real_query()} @tab
Executes a SQL query specified as a counted string. Executes an SQL query specified as a counted string.
@item @strong{mysql_reload()} @tab @item @strong{mysql_reload()} @tab
Tells the server to reload the grant tables. Tells the server to reload the grant tables.
...@@ -33159,7 +33164,7 @@ specified as a null-terminated string whereas @code{mysql_real_query()} ...@@ -33159,7 +33164,7 @@ specified as a null-terminated string whereas @code{mysql_real_query()}
expects a counted string. If the string contains binary data (which may expects a counted string. If the string contains binary data (which may
include null bytes), you must use @code{mysql_real_query()}. include null bytes), you must use @code{mysql_real_query()}.
For each non-@code{SELECT} query (e.g., @code{INSERT}, @code{UPDATE}, For each non-@code{SELECT} query (for example, @code{INSERT}, @code{UPDATE},
@code{DELETE}), you can find out how many rows were affected (changed) @code{DELETE}), you can find out how many rows were affected (changed)
by calling @code{mysql_affected_rows()}. by calling @code{mysql_affected_rows()}.
...@@ -33447,7 +33452,7 @@ become the default (current) database on the connection specified by ...@@ -33447,7 +33452,7 @@ become the default (current) database on the connection specified by
@code{mysql}. In subsequent queries, this database is the default for @code{mysql}. In subsequent queries, this database is the default for
table references that do not include an explicit database specifier. table references that do not include an explicit database specifier.
This function was introduced in @strong{MySQL} 3.23.3. This function was introduced in @strong{MySQL} Version 3.23.3.
@code{mysql_change_user()} fails unless the connected user can be @code{mysql_change_user()} fails unless the connected user can be
authenticated or if he doesn't have permission to use the database. In authenticated or if he doesn't have permission to use the database. In
...@@ -33523,7 +33528,7 @@ None. ...@@ -33523,7 +33528,7 @@ None.
Creates the database named by the @code{db} parameter. Creates the database named by the @code{db} parameter.
This function is deprecated. It is preferable to use @code{mysql_query()} This function is deprecated. It is preferable to use @code{mysql_query()}
to issue a SQL @code{CREATE DATABASE} statement instead. to issue an SQL @code{CREATE DATABASE} statement instead.
@subsubheading Return values @subsubheading Return values
...@@ -33616,7 +33621,7 @@ mysql_debug("d:t:O,/tmp/client.trace"); ...@@ -33616,7 +33621,7 @@ mysql_debug("d:t:O,/tmp/client.trace");
Drops the database named by the @code{db} parameter. Drops the database named by the @code{db} parameter.
This function is deprecated. It is preferable to use @code{mysql_query()} This function is deprecated. It is preferable to use @code{mysql_query()}
to issue a SQL @code{DROP DATABASE} statement instead. to issue an SQL @code{DROP DATABASE} statement instead.
@subsubheading Return values @subsubheading Return values
...@@ -34379,7 +34384,7 @@ An unknown error occurred. ...@@ -34379,7 +34384,7 @@ An unknown error occurred.
Returns a result set consisting of database names on the server that match Returns a result set consisting of database names on the server that match
the simple regular expression specified by the @code{wild} parameter. the simple regular expression specified by the @code{wild} parameter.
@code{wild} may contain the wildcard characters @samp{%} or @samp{_}, or may @code{wild} may contain the wild-card characters @samp{%} or @samp{_}, or may
be a @code{NULL} pointer to match all databases. Calling be a @code{NULL} pointer to match all databases. Calling
@code{mysql_list_dbs()} is similar to executing the query @code{SHOW @code{mysql_list_dbs()} is similar to executing the query @code{SHOW
databases [LIKE wild]}. databases [LIKE wild]}.
...@@ -34415,7 +34420,7 @@ An unknown error occurred. ...@@ -34415,7 +34420,7 @@ An unknown error occurred.
Returns a result set consisting of field names in the given table that match Returns a result set consisting of field names in the given table that match
the simple regular expression specified by the @code{wild} parameter. the simple regular expression specified by the @code{wild} parameter.
@code{wild} may contain the wildcard characters @samp{%} or @samp{_}, or may @code{wild} may contain the wild-card characters @samp{%} or @samp{_}, or may
be a @code{NULL} pointer to match all fields. Calling be a @code{NULL} pointer to match all fields. Calling
@code{mysql_list_fields()} is similar to executing the query @code{SHOW @code{mysql_list_fields()} is similar to executing the query @code{SHOW
COLUMNS FROM tbl_name [LIKE wild]}. COLUMNS FROM tbl_name [LIKE wild]}.
...@@ -34483,7 +34488,7 @@ An unknown error occurred. ...@@ -34483,7 +34488,7 @@ An unknown error occurred.
Returns a result set consisting of table names in the current database that Returns a result set consisting of table names in the current database that
match the simple regular expression specified by the @code{wild} parameter. match the simple regular expression specified by the @code{wild} parameter.
@code{wild} may contain the wildcard characters @samp{%} or @samp{_}, or may @code{wild} may contain the wild-card characters @samp{%} or @samp{_}, or may
be a @code{NULL} pointer to match all tables. Calling be a @code{NULL} pointer to match all tables. Calling
@code{mysql_list_tables()} is similar to executing the query @code{SHOW @code{mysql_list_tables()} is similar to executing the query @code{SHOW
tables [LIKE wild]}. tables [LIKE wild]}.
...@@ -34909,7 +34914,7 @@ try reconnecting to the server before giving up. ...@@ -34909,7 +34914,7 @@ try reconnecting to the server before giving up.
Encodes the string in @code{from} to an escaped SQL string, taking into Encodes the string in @code{from} to an escaped SQL string, taking into
account the current charset of the connection, that can be sent to the account the current charset of the connection, that can be sent to the
server in a SQL statement, places the result in @code{to}, and adds a server in an SQL statement, places the result in @code{to}, and adds a
terminating null byte. Characters encoded are @code{NUL} (ASCII 0), terminating null byte. Characters encoded are @code{NUL} (ASCII 0),
@samp{\n}, @samp{\r}, @samp{\}, @samp{'}, @samp{"} and Control-Z @samp{\n}, @samp{\r}, @samp{\}, @samp{'}, @samp{"} and Control-Z
(@pxref{Literals}). (@pxref{Literals}).
...@@ -35008,7 +35013,7 @@ Asks the @strong{MySQL} server to reload the grant tables. The ...@@ -35008,7 +35013,7 @@ Asks the @strong{MySQL} server to reload the grant tables. The
connected user must have the @strong{reload} privilege. connected user must have the @strong{reload} privilege.
This function is deprecated. It is preferable to use @code{mysql_query()} This function is deprecated. It is preferable to use @code{mysql_query()}
to issue a SQL @code{FLUSH PRIVILEGES} statement instead. to issue an SQL @code{FLUSH PRIVILEGES} statement instead.
@subsubheading Return values @subsubheading Return values
...@@ -35333,7 +35338,7 @@ large). ...@@ -35333,7 +35338,7 @@ large).
The data couldn't be read (an error occurred on the connection). The data couldn't be read (an error occurred on the connection).
@item @item
The query returned no data (e.g., it was an @code{INSERT}, @code{UPDATE} The query returned no data (for example, it was an @code{INSERT}, @code{UPDATE}
or @code{DELETE}). or @code{DELETE}).
@end itemize @end itemize
...@@ -35578,9 +35583,9 @@ Installation instructions for @strong{MySQL} Perl support are given in ...@@ -35578,9 +35583,9 @@ Installation instructions for @strong{MySQL} Perl support are given in
@multitable @columnfractions .3 .7 @multitable @columnfractions .3 .7
@item @code{connect} @tab Establishes a connection to a database server. @item @code{connect} @tab Establishes a connection to a database server.
@item @code{disconnect} @tab Disconnects from the database server. @item @code{disconnect} @tab Disconnects from the database server.
@item @code{prepare} @tab Prepares a SQL statement for execution. @item @code{prepare} @tab Prepares an SQL statement for execution.
@item @code{execute} @tab Executes prepared statements. @item @code{execute} @tab Executes prepared statements.
@item @code{do} @tab Prepares and executes a SQL statement. @item @code{do} @tab Prepares and executes an SQL statement.
@item @code{quote} @tab Quotes string or @code{BLOB} values to be inserted. @item @code{quote} @tab Quotes string or @code{BLOB} values to be inserted.
@item @code{fetchrow_array} @tab Fetches the next row as an array of fields. @item @code{fetchrow_array} @tab Fetches the next row as an array of fields.
@item @code{fetchrow_arrayref} @tab Fetches next row as a reference array of fields. @item @code{fetchrow_arrayref} @tab Fetches next row as a reference array of fields.
...@@ -35713,7 +35718,7 @@ $rc = $dbh->disconnect; ...@@ -35713,7 +35718,7 @@ $rc = $dbh->disconnect;
@findex DBI->prepare() @findex DBI->prepare()
@findex prepare() DBI method @findex prepare() DBI method
@item prepare($statement) @item prepare($statement)
Prepares a SQL statement for execution by the database engine Prepares an SQL statement for execution by the database engine
and returns a statement handle @code{($sth)} which you can use to invoke and returns a statement handle @code{($sth)} which you can use to invoke
the @code{execute} method. the @code{execute} method.
Typically you handle @code{SELECT} statements (and @code{SELECT}-like statements Typically you handle @code{SELECT} statements (and @code{SELECT}-like statements
...@@ -35744,7 +35749,7 @@ $rv = $sth->execute ...@@ -35744,7 +35749,7 @@ $rv = $sth->execute
@findex DBI->do() @findex DBI->do()
@findex do() DBI method @findex do() DBI method
@item do($statement) @item do($statement)
The @code{do} method prepares and executes a SQL statement and returns the The @code{do} method prepares and executes an SQL statement and returns the
number of rows affected. If no rows are affected, @code{do} returns number of rows affected. If no rows are affected, @code{do} returns
@code{"0E0"}, which Perl treats as zero but regards as true. This method is @code{"0E0"}, which Perl treats as zero but regards as true. This method is
generally used for non-@code{SELECT} statements which cannot be prepared in generally used for non-@code{SELECT} statements which cannot be prepared in
...@@ -36512,7 +36517,7 @@ Create a @code{SEQUENCE} on a table and select the @code{_seq} column. ...@@ -36512,7 +36517,7 @@ Create a @code{SEQUENCE} on a table and select the @code{_seq} column.
@table @code @table @code
@item @strong{MySQL} @item @strong{MySQL}
Add a @code{PRIMARY KEY} or @code{UNIQUE} key to the table and use this. Add a @code{PRIMARY KEY} or @code{UNIQUE} key to the table and use this.
New in 3.23.11: If the @code{PRIMARY} or @code{UNIQUE} key consists of only one New in Version 3.23.11: If the @code{PRIMARY} or @code{UNIQUE} key consists of only one
column and this is of type integer, one can also refer to it as column and this is of type integer, one can also refer to it as
@code{_rowid}. @code{_rowid}.
@item mSQL @item mSQL
...@@ -36568,7 +36573,7 @@ sorting in ASCII order. ...@@ -36568,7 +36573,7 @@ sorting in ASCII order.
@item @strong{MySQL} @item @strong{MySQL}
@code{LIKE} is a case-insensitive or case-sensitive operator, depending on @code{LIKE} is a case-insensitive or case-sensitive operator, depending on
the columns involved. If possible, @strong{MySQL} uses indexes if the the columns involved. If possible, @strong{MySQL} uses indexes if the
@code{LIKE} argument doesn't start with a wildcard character. @code{LIKE} argument doesn't start with a wild-card character.
@item mSQL @item mSQL
Use @code{CLIKE}. Use @code{CLIKE}.
@end table @end table
...@@ -36686,7 +36691,7 @@ working on the @strong{MySQL} code. ...@@ -36686,7 +36691,7 @@ working on the @strong{MySQL} code.
@node MySQL threads, MySQL full-text search, MySQL internals, MySQL internals @node MySQL threads, MySQL full-text search, MySQL internals, MySQL internals
@section MySQL threads @section MySQL threads
The @strong{MySQL} server creates the the following threads: The @strong{MySQL} server creates the following threads:
@itemize @bullet @itemize @bullet
@item @item
...@@ -36727,7 +36732,7 @@ DELAYED} threads. ...@@ -36727,7 +36732,7 @@ DELAYED} threads.
@node MySQL full-text search, , MySQL threads, MySQL internals @node MySQL full-text search, , MySQL threads, MySQL internals
@section MySQL full-text search @section MySQL full-text search
Since version 3.23.23, @strong{MySQL} has support for full-text indexing Since Version 3.23.23, @strong{MySQL} has support for full-text indexing
and searching. Full-text index in @strong{MySQL} is an and searching. Full-text index in @strong{MySQL} is an
index of type @code{FULLTEXT}. @code{FULLTEXT} indexes can be created from index of type @code{FULLTEXT}. @code{FULLTEXT} indexes can be created from
@code{VARCHAR} and @code{TEXT} columns at @code{CREATE TABLE} time or added @code{VARCHAR} and @code{TEXT} columns at @code{CREATE TABLE} time or added
...@@ -37513,7 +37518,7 @@ Windows GUI (binary only) to administrate a database, by David B. Mansel, ...@@ -37513,7 +37518,7 @@ Windows GUI (binary only) to administrate a database, by David B. Mansel,
@item @uref{http://www.mysql.com/Downloads/Win32/netadmin.zip, netadmin.zip} @item @uref{http://www.mysql.com/Downloads/Win32/netadmin.zip, netadmin.zip}
An administrator tool for @strong{MySQL} on Windows 95/98 and Windows NT An administrator tool for @strong{MySQL} on Windows 95/98 and Windows NT
4.0. Only tested with @strong{MySQL} 3.23.5 - 3.23.7. Written using the 4.0. Only tested with @strong{MySQL} Version 3.23.5 - 3.23.7. Written using the
Tmysql components. Tmysql components.
You can write queries and show tables, indexes, table syntax and You can write queries and show tables, indexes, table syntax and
...@@ -37634,10 +37639,10 @@ Originally written to implement a simple fast low-overhead banner-rotation syste ...@@ -37634,10 +37639,10 @@ Originally written to implement a simple fast low-overhead banner-rotation syste
By Sasha Pachev. By Sasha Pachev.
@item @uref{http://www.odbsoft.com/cook/sources.htm} @item @uref{http://www.odbsoft.com/cook/sources.htm}
This package has various functions for generating html code from a SQL This package has various functions for generating html code from an SQL
table structure and for generating SQL statements (Select, Insert, table structure and for generating SQL statements (Select, Insert,
Update, Delete) from an html form. You can build a complete forms Update, Delete) from an html form. You can build a complete forms
interface to a SQL database (query, add, update, delete) without any interface to an SQL database (query, add, update, delete) without any
programming! By Marc Beneteau, @email{marc@@odbsoft.com}. programming! By Marc Beneteau, @email{marc@@odbsoft.com}.
@item @uref{http://www.mysql.com/Downloads/Contrib/sqlhtml.tar.gz, sqlhtml.tar.gz} @item @uref{http://www.mysql.com/Downloads/Contrib/sqlhtml.tar.gz, sqlhtml.tar.gz}
...@@ -37646,7 +37651,7 @@ SQL/HTML is an HTML database manager for @strong{MySQL} using @code{DBI} 1.06. ...@@ -37646,7 +37651,7 @@ SQL/HTML is an HTML database manager for @strong{MySQL} using @code{DBI} 1.06.
@item @uref{http://www.mysql.com/Downloads/Contrib/udmsearch-3.0.21.tar.gz, UdmSearch 3.0.22 (stable version)} @item @uref{http://www.mysql.com/Downloads/Contrib/udmsearch-3.0.21.tar.gz, UdmSearch 3.0.22 (stable version)}
@item @uref{http://www.mysql.com/Downloads/Contrib/udmsearch-3.1.3.tar.gz, UdmSearch 3.1.3 (development version)} @item @uref{http://www.mysql.com/Downloads/Contrib/udmsearch-3.1.3.tar.gz, UdmSearch 3.1.3 (development version)}
@item @uref{http://search.mnoGo.ru, UdmSearch home page} @item @uref{http://search.mnoGo.ru, UdmSearch home page}
A SQL-based search engine for Internet. By An SQL-based search engine for Internet. By
Alexander I. Barkov @email{bar@@izhcom.ru}. Alexander I. Barkov @email{bar@@izhcom.ru}.
@item @uref{http://www.mysql.com/Downloads/Contrib/wmtcl.doc, wmtcl.doc} @item @uref{http://www.mysql.com/Downloads/Contrib/wmtcl.doc, wmtcl.doc}
...@@ -37812,7 +37817,7 @@ By Steve Shreeve. ...@@ -37812,7 +37817,7 @@ By Steve Shreeve.
@itemize @bullet @itemize @bullet
@item @uref{http://www.mysql.com/Downloads/Contrib/emacs-sql-mode.tar.gz, emacs-sql-mode.tar.gz} @item @uref{http://www.mysql.com/Downloads/Contrib/emacs-sql-mode.tar.gz, emacs-sql-mode.tar.gz}
Raw port of a SQL mode for XEmacs. Supports completion. Original by Raw port of an SQL mode for XEmacs. Supports completion. Original by
Peter D. Pezaris @email{pez@@atlantic2.sbi.com} and partial Peter D. Pezaris @email{pez@@atlantic2.sbi.com} and partial
@strong{MySQL} port by David Axmark. @strong{MySQL} port by David Axmark.
...@@ -38027,7 +38032,7 @@ Win32 port with Borland compiler. @code{mysqlshutdown.exe} and ...@@ -38027,7 +38032,7 @@ Win32 port with Borland compiler. @code{mysqlshutdown.exe} and
@item David J. Hughes @item David J. Hughes
For the effort to make a shareware SQL database. We at TcX started with For the effort to make a shareware SQL database. We at TcX started with
@code{mSQL}, but found that it couldn't satisfy our purposes so instead we @code{mSQL}, but found that it couldn't satisfy our purposes so instead we
wrote a SQL interface to our application builder Unireg. @code{mysqladmin} wrote an SQL interface to our application builder Unireg. @code{mysqladmin}
and @code{mysql} are programs that were largely influenced by their and @code{mysql} are programs that were largely influenced by their
@code{mSQL} counterparts. We have put a lot of effort into making the @code{mSQL} counterparts. We have put a lot of effort into making the
@strong{MySQL} syntax a superset of @code{mSQL}. Many of the APIs ideas are @strong{MySQL} syntax a superset of @code{mSQL}. Many of the APIs ideas are
...@@ -38258,9 +38263,9 @@ tables. The 3.23 release also includes support for database ...@@ -38258,9 +38263,9 @@ tables. The 3.23 release also includes support for database
replication between a master and many slaves. replication between a master and many slaves.
We are not adding any more new features that are likely to break any We are not adding any more new features that are likely to break any
old code in @strong{MySQL} 3.23, so we recommend that you use this old code in @strong{MySQL} Version 3.23, so we recommend that you use this
version. The replication and BerkeleyDB code is still under development, version. The replication and BerkeleyDB code is still under development,
though, so 3.23 is not released as a stable version yet. though, so Version 3.23 is not released as a stable version yet.
@menu @menu
* News-3.23.28:: Changes in release 3.23.28 * News-3.23.28:: Changes in release 3.23.28
...@@ -41363,7 +41368,7 @@ New portable benchmark suite with @code{DBD}, with test results from ...@@ -41363,7 +41368,7 @@ New portable benchmark suite with @code{DBD}, with test results from
@code{mSQL} 2.0.3, @strong{MySQL}, PostgreSQL 6.2.1 and Solid server 2.2. @code{mSQL} 2.0.3, @strong{MySQL}, PostgreSQL 6.2.1 and Solid server 2.2.
@item @item
@code{crash-me} is now included with the benchmarks; This is a Perl program @code{crash-me} is now included with the benchmarks; This is a Perl program
designed to find as many limits as possible in a SQL server. Tested with designed to find as many limits as possible in an SQL server. Tested with
@code{mSQL}, PostgreSQL, Solid and @strong{MySQL}. @code{mSQL}, PostgreSQL, Solid and @strong{MySQL}.
@item @item
Fixed bug in range-optimizer that crashed @strong{MySQL} on some queries. Fixed bug in range-optimizer that crashed @strong{MySQL} on some queries.
...@@ -42629,7 +42634,7 @@ Because @strong{MySQL} allows you to work with table types that doesn't ...@@ -42629,7 +42634,7 @@ Because @strong{MySQL} allows you to work with table types that doesn't
support transactions (and thus can't @code{rollback} data) some things support transactions (and thus can't @code{rollback} data) some things
behaves a little different in @strong{MySQL} than in other SQL servers: behaves a little different in @strong{MySQL} than in other SQL servers:
(This is just to ensure that @strong{MySQL} never need to do a rollback (This is just to ensure that @strong{MySQL} never need to do a rollback
for a SQL command). This may be a little akward at times as column for an SQL command). This may be a little akward at times as column
values must be checked in the application, but this will actually give values must be checked in the application, but this will actually give
you a nice speed increase as it allows @strong{MySQL} to do some you a nice speed increase as it allows @strong{MySQL} to do some
optimizations that otherwice would be very hard to do. optimizations that otherwice would be very hard to do.
...@@ -43833,7 +43838,7 @@ mysql> select "gheisa" REGEXP "^[^a-dXYZ]+$"; -> 0 ...@@ -43833,7 +43838,7 @@ mysql> select "gheisa" REGEXP "^[^a-dXYZ]+$"; -> 0
The sequence of characters of that collating element. The sequence is a The sequence of characters of that collating element. The sequence is a
single element of the bracket expression's list. A bracket expression single element of the bracket expression's list. A bracket expression
containing a multi-character collating element can thus match more than containing a multi-character collating element can thus match more than
one character, e.g., if the collating sequence includes a @code{ch} one character, for example, if the collating sequence includes a @code{ch}
collating element, then the regular expression @code{[[.ch.]]*c} matches the collating element, then the regular expression @code{[[.ch.]]*c} matches the
first five characters of @code{chchcc}. first five characters of @code{chchcc}.
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