summaryrefslogtreecommitdiff
path: root/Docs
diff options
context:
space:
mode:
authormonty@hundin.mysql.fi <>2002-01-29 18:32:16 +0200
committermonty@hundin.mysql.fi <>2002-01-29 18:32:16 +0200
commitbe46289855f01c0d563671beb5135c22b7bad2aa (patch)
treedc6d00358536a5dca27f806f929ab5e25a000c92 /Docs
parente2a5c3e4cd331d9addc2342549e2c47ac7e9cb7a (diff)
downloadmariadb-git-be46289855f01c0d563671beb5135c22b7bad2aa.tar.gz
New error messages
Test of unsigned BIGINT values Fixes for queries-per-hour Cleanup of replication code (comments and portability fixes) Make most of the binary log code 4G clean Changed syntax for GRANT ... QUERIES PER HOUR
Diffstat (limited to 'Docs')
-rw-r--r--Docs/manual.texi279
-rw-r--r--Docs/my_sys.txt140
-rw-r--r--Docs/mysqld_error.txt2
3 files changed, 331 insertions, 90 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi
index 6ac76194e5d..4af176c794f 100644
--- a/Docs/manual.texi
+++ b/Docs/manual.texi
@@ -2965,7 +2965,7 @@ for the records to be deleted, and then use these values to construct
the @code{DELETE} statement (@code{DELETE FROM ... WHERE ... IN (key1,
key2, ...)}).
-The second option is to use interactive SQL to contruct a set of
+The second option is to use interactive SQL to construct a set of
@code{DELETE} statements automatically, using the MySQL
extension @code{CONCAT()} (in lieu of the standard @code{||} operator).
For example:
@@ -3686,6 +3686,7 @@ For platform-specific bugs, see the sections about compiling and porting.
@menu
* TODO MySQL 4.0:: Things That Should be in Version 4.0
+* TODO MySQL 4.1::
* TODO future:: Things That Must be Done in the Near Future
* TODO sometime:: Things That Have to be Done Sometime
* TODO unplanned:: Things we don't Have any Plans to do
@@ -3702,30 +3703,30 @@ standard, but with a lot of useful extensions. The challenge is to do
this without sacrifying the speed or compromise the code.
-@node TODO MySQL 4.0, TODO future, TODO, TODO
+@node TODO MySQL 4.0, TODO MySQL 4.1, TODO, TODO
@subsection Things That Should be in 4.0
-We have now shifted development to MySQL Server 4.0. Most of the basic
-things we want to have in 4.0 are already done. The target is to quickly
-implement the rest of the following features and then shift development
-to MySQL Server 4.1. @xref{MySQL 4.0 In A Nutshell}.
+We have now in the final stages one the development of the MySQL Server
+4.0. server. The target is to quickly implement the rest of the
+following features and then shift development to MySQL Server
+4.1. @xref{MySQL 4.0 In A Nutshell}.
The news section for 4.0 includes a list of the features we have already
implemented in the 4.0 tree. @xref{News-4.0.x}.
-This section lists features not yet implemented in the current
-version of MySQL Server 4.0, which will however be implemented in
-later versions of MySQL 4.0. This being very volatile information,
-please consider this list valid only if you are reading it from
-the MySQL web site (@uref{http://www.mysql.com/}).
+This section lists features not yet implemented in the current version
+of MySQL Server 4.0, which will however be implemented in later versions
+of MySQL 4.0. This being very volatile information, please consider this
+list valid only if you are reading it from the MySQL web site
+(@uref{http://www.mysql.com/}).
@itemize @bullet
@item
Allow users to change startup options without taking down the server.
@item
-Fail safe replication.
+Better command line argument handling.
@item
-New key cache
+New key cache, which will give better performance when using many threads.
@item
New table definition file format (@code{.frm} files) This will enable us
to not run out of bits when adding more table options. One will still
@@ -3733,52 +3734,40 @@ be able to use the old @code{.frm} file format with 4.0. All newly created
tables will, however, use the new format.
The new file format will enable us to add new column types, more options
-for keys and @code{FOREIGN KEY} support.
-@item
-Replication should work with @code{RAND()} and user variables @code{@@var}.
-@item
-Online backup with very low performance penalty. The online backup will
-make it easy to add a new replication slave without taking down the
-master.
-@item
-Allow @code{DELETE} on @code{MyISAM} tables to use the record cache.
-To do this, we need to update the threads record cache when we update
-the @code{.MYD} file.
-@item
-Character set casts and syntax for handling multiple character sets.
-@item
-Help for all commands from the client.
+for keys and possible to store and retrieve @code{FOREIGN KEY} definitions.
@item
@code{SHOW COLUMNS FROM table_name} (used by @code{mysql} client to allow
expansions of column names) should not open the table, but only the
definition file. This will require less memory and be much faster.
@item
-When using @code{SET CHARACTER SET} we should translate the whole query
-at once and not only strings. This will enable users to use the translated
-characters in database, table and column names.
-@item
-Add @code{record_in_range()} method to @code{MERGE} tables to be
-able to choose the right index when there is many to choose from. We should
-also extend the info interface to get the key distribution for each index,
-of @code{analyze} is run on all sub tables.
-@item
-@code{RENAME TABLE} on a table used in an active @code{MERGE} table may
-corrupt the table.
-@item
@code{SET SQL_DEFAULT_TABLE_TYPE=[MyISAM | INNODB | BDB | HEAP]}.
@end itemize
-@node TODO future, TODO sometime, TODO MySQL 4.0, TODO
-@subsection Things That Must be Done in the Real Near Future
+@node TODO MySQL 4.1, TODO future, TODO MySQL 4.0, TODO
+@subsection Things That Should be in 4.1
+
+We will start working on MySQL 4.1 as soon as MySQL 4.0 goes into beta.
+
+The following features is the ones we plan that should be in MySQL 4.1.
+Note that because we have many developers that are working on different
+projects, there will also be many additional features. There is also a
+small change that some of these features will be added to MySQL 4.0.
@itemize @bullet
@item
Subqueries.
@code{SELECT id FROM t WHERE grp IN (SELECT grp FROM g WHERE u > 100)}
@item
-Atomic multi-table updates, eg @code{update items,month set
-items.price=month.price where items.id=month.id;};
+Foreign keys, including cascading delete.
+@item
+Fail safe replication.
+@item
+Replication should work with @code{RAND()} and user variables @code{@@var}.
+@item
+Online backup with very low performance penalty. The online backup will
+make it easy to add a new replication slave without taking down the
+master.
@item
Derived tables.
@example
@@ -3791,20 +3780,46 @@ SELECT a.col1, b.col2
This could be done by automatically creating temporary tables for the
derived tables for the duration of the query.
@item
-Add @code{PREPARE} of statements and sending of parameters to @code{mysqld}.
+Allow @code{DELETE} on @code{MyISAM} tables to use the record cache.
+To do this, we need to update the threads record cache when we update
+the @code{.MYD} file.
@item
-Extend the client/server protocol to support warnings.
+When using @code{SET CHARACTER SET} we should translate the whole query
+at once and not only strings. This will enable users to use the translated
+characters in database, table and column names.
@item
-Add options to the client/server protocol to get progress notes
-for long running commands.
+Add @code{record_in_range()} method to @code{MERGE} tables to be
+able to choose the right index when there is many to choose from. We should
+also extend the info interface to get the key distribution for each index,
+of @code{analyze} is run on all sub tables.
+@item
+@code{RENAME TABLE} on a table used in an active @code{MERGE} table may
+corrupt the table.
+@item
+A faster, smaller embedded MySQL library. (Compatible with the old one)
+@item
+Stable openssl support. (MySQL 4.0 supports rudimentary, not 100 % tested
+support for openssl).
+@item
+Add support for sorting on @code{UNICODE}.
+@item
+Character set casts and syntax for handling multiple character sets.
+@item
+When using @code{SET CHARACTER SET} we should translate the whole query
+at once and not only strings. This will enable users to use the translated
+characters in database, table and column names.
+@item
+Help for all commands from the client.
+@item
+New faster client/server protocol which will support prepared statements,
+bound parameters and bound result columns, binary transfer of data,
+warnings...
@item
Add database and real table name (in case of alias) to the MYSQL_FIELD
structure.
@item
-Don't allow more than a defined number of threads to run MyISAM recover
-at the same time.
-@item
-Change @code{INSERT ... SELECT} to optionally use concurrent inserts.
+Add options to the client/server protocol to get progress notes
+for long running commands.
@item
Implement @code{RENAME DATABASE}. To make this safe for all table handlers,
it should work as follows:
@@ -3818,16 +3833,45 @@ we do with the @code{RENAME} command.
Drop the old database.
@end itemize
@item
+Add true @code{VARCHAR} support (There is already support for this in
+@code{MyISAM}).
+@item
+Optimise @code{BIT} type to take 1 bit (now @code{BIT} takes 1 char).
+@item
+New internal file interface change. This will make all file handling much
+more general and make it easier to add extensions like RAID nicely.
+(The current implementation is a hack).
+@item
+Better in-memory (@code{HEAP}) tables:
+@itemize @bullet
+@item
+Support for B-tree indexes
+@item
+Dynamic size rows
+@item
+Faster row handling (less copying)
+@end itemize
+@end itemize
+
+
+@node TODO future, TODO sometime, TODO MySQL 4.1, TODO
+@subsection Things That Must be Done in the Real Near Future
+
+@itemize @bullet
+@item
+Atomic multi-table updates, eg @code{update items,month set
+items.price=month.price where items.id=month.id;};
+@item
+Don't allow more than a defined number of threads to run MyISAM recover
+at the same time.
+@item
+Change @code{INSERT ... SELECT} to optionally use concurrent inserts.
+@item
Return the original field types() when doing @code{SELECT MIN(column)
... GROUP BY}.
@item
Multiple result sets.
@item
-Change the protocol to allow binary transfer of values. To do this
-efficiently, we need to add an API to allow binding of variables.
-@item
-Add @code{PREPARE} of statements and sending of parameters to @code{mysqld}.
-@item
Make it possible to specify @code{long_query_time} with a granularity
in microseconds.
@item
@@ -3836,6 +3880,8 @@ options like database in use, time and date...
@item
Link the @code{myisampack} code into the server.
@item
+Port of the MySQL code to QNX.
+@item
Port of the MySQL code to BeOS.
@item
Port of the MySQL clients to LynxOS.
@@ -3864,10 +3910,6 @@ Allow join on key parts (optimisation issue).
@code{INSERT SQL_CONCURRENT} and @code{mysqld --concurrent-insert} to do
a concurrent insert at the end of the file if the file is read-locked.
@item
-Remember @code{FOREIGN} key definitions in the @file{.frm} file.
-@item
-Cascading @code{DELETE}
-@item
Server side cursors.
@item
Check if @code{lockd} works with modern Linux kernels; If not, we have
@@ -3891,8 +3933,6 @@ an @code{INSERT} that doesn't contain a column that doesn't have a
Fix @file{libmysql.c} to allow two @code{mysql_query()} commands in a row
without reading results or give a nice error message when one does this.
@item
-Optimise @code{BIT} type to take 1 bit (now @code{BIT} takes 1 char).
-@item
Check why MIT-pthreads @code{ctime()} doesn't work on some FreeBSD systems.
@item
Add an @code{IMAGE} option to @code{LOAD DATA INFILE} to not update
@@ -3933,15 +3973,10 @@ and maybe
data_line - the line from the data file
@end example
@item
-Add true @code{VARCHAR} support (There is already support for this in
-@code{MyISAM}).
-@item
Automatic output from @code{mysql} to Netscape.
@item
@code{LOCK DATABASES}. (with various options)
@item
-Change sort to allocate memory in ``hunks'' to get better memory utilisation.
-@item
@code{DECIMAL} and @code{NUMERIC} types can't read exponential numbers;
@code{Field_decimal::store(const char *from,uint len)} must be recoded
to fix this.
@@ -3965,8 +4000,6 @@ table. This would be a bit slow if you requested information about all tables,
but very flexible. @code{SHOW INFO FROM tbl_name} for basic table information
should be implemented.
@item
-Add support for UNICODE.
-@item
@code{NATURAL JOIN}.
@item
Allow @code{select a from crash_me left join crash_me2 using (a)}; In this
@@ -4006,9 +4039,6 @@ Change that @code{ALTER TABLE} doesn't abort clients that executes
Fix that when columns referenced in an @code{UPDATE} clause contains the old
values before the update started.
@item
-@code{myisamchk}, @code{REPAIR} and @code{OPTIMIZE TABLE} should be able
-to handle cases where the data and/or index files are symbolic links.
-@item
Add simulation of @code{pread()}/@code{pwrite()} on Windows to enable
concurrent inserts.
@item
@@ -6436,7 +6466,7 @@ sometimes required. If you have problems, we recommend trying GNU
If you are using a recent version of @strong{gcc}, recent enough to understand
@code{-fno-exceptions} option, it is @strong{very important} that you use
it. Otherwise, you may compile a binary that crashes randomly. We also
-recommend that you use @code{-felide-contructors} and @code{-fno-rtti} along
+recommend that you use @code{-felide-constructors} and @code{-fno-rtti} along
with @code{-fno-exceptions}. When in doubt, do the following:
@example
@@ -6969,8 +6999,9 @@ speed of your connection; be patient.
@item
You will need GNU @code{autoconf 2.13}, @code{automake 1.4},
@code{libtool}, and @code{m4} to run the next set of commands.
-Note that the new versions of @code{autoconf} (2.52) and @code{automake}
-(1.5) do not work.
+
+If you are using the 3.23 tree the new versions of @code{autoconf}
+(2.52) and @code{automake} (1.5) will not work.
If you get some strange error during this stage, check that you really
have @code{libtool} installed!
@@ -8100,12 +8131,24 @@ than it had in 3.23.
@item
@code{SIGNED} is a reserved word.
@item
+The result of all bitwise operators @code{|}, @code{&}, @code{<<},
+@code{>>} and @code{~} is now unsigned. This may cause problems if your
+are using them in a context where you want an signed result. @xref{Cast
+Functions}.
+@item
+@strong{NOTE:} When you use subtraction between integers values where
+one is of type @code{UNSIGNED}, the result will be unsigned! In other
+words, before upgrading to MySQL 4.0, you should check your application
+for cases where you are subtracting a value from an unsigned entity
+and want a negative answer or subtracting an unsigned value from a an
+integer column. @xref{Cast Functions}.
+@item
To use @code{MATCH ... AGAINST (... IN BOOLEAN MODE)} with your tables,
you need to rebuild them with @code{ALTER TABLE table_name TYPE=MyISAM},
@strong{even} if they are of @code{MyISAM} type.
@item
-@code{LOCATE()} and @code{INSTR()} are case sensitive if neither
-argument is a binary string.
+@code{LOCATE()} and @code{INSTR()} are case sensitive if one of the
+arguments is a binary string.
@item
@code{HEX(string)} now returns the characters in string converted to
hexadecimal. If you want to convert a number to hexadecimal, you should
@@ -16159,7 +16202,7 @@ GRANT priv_type [(column_list)] [, priv_type [(column_list)] ...]
[CIPHER cipher [AND]]
[ISSUER issuer [AND]]
[SUBJECT subject]]
- [WITH GRANT OPTION]
+ [WITH [GRANT OPTION | MAX_QUERIES_PER_HOUR=#]]
REVOKE priv_type [(column_list)] [, priv_type [(column_list)] ...]
ON @{tbl_name | * | *.* | db_name.*@}
@@ -16320,6 +16363,12 @@ to other users any privileges the user has at the specified privilege level.
You should be careful to whom you give the @strong{grant} privilege, as two
users with different privileges may be able to join privileges!
+@code{MAX_QUERIES_PER_HOUR=#} limits the number of queries the user can
+do during one hour. If @code{#} is 0, then this means that there is no
+limit of the number of queries. This works by MySQL resetting a user
+specific query counter to 0, after it has gone more than one hour
+since the counter started incrementing.
+
You cannot grant another user a privilege you don't have yourself;
the @strong{grant} privilege allows you to give away only those privileges
you possess.
@@ -28068,6 +28117,10 @@ that are optional.
Note that if you specify @code{ZEROFILL} for a column, MySQL will
automatically add the @code{UNSIGNED} attribute to the column.
+@strong{Warning:} You should be aware that when you use subtraction
+between integers values where one is of type @code{UNSIGNED}, the result
+will be unsigned! @xref{Cast Functions}.
+
@table @code
@tindex TINYINT
@item TINYINT[(M)] [UNSIGNED] [ZEROFILL]
@@ -30841,9 +30894,13 @@ make string comparison even more flexible.
@node Arithmetic functions, Mathematical functions, Numeric Functions, Numeric Functions
@subsubsection Arithmetic Operations
+@cindex operators, cast
The usual arithmetic operators are available. Note that in the case of
@samp{-}, @samp{+}, and @samp{*}, the result is calculated with
@code{BIGINT} (64-bit) precision if both arguments are integers!
+If one of the argument is an unsigned integer, and the other argument
+is also an integer, the result will be an unsigned integer.
+@xref{Cast Functions}.
@cindex operations, arithmetic
@cindex arithmetic expressions
@@ -30879,8 +30936,9 @@ mysql> select 18014398509481984*18014398509481984;
-> 0
@end example
-The result of the last expression is incorrect because the result of the integer
-multiplication exceeds the 64-bit range of @code{BIGINT} calculations.
+The result of the last expression is incorrect because the result of the
+integer multiplication exceeds the 64-bit range of @code{BIGINT}
+calculations.
@findex / (division)
@findex division (/)
@@ -31903,10 +31961,10 @@ mysql> select 1+'1';
MySQL supports arithmetic with both signed and unsigned 64 bit values.
If you are using an numerical operations (like @code{+}) and one of the
-operands are @code{unsigned}, then the result will be unsigned. You can
-override this by using the @code{SIGNED} and @code{UNSIGNED} cast
-operators, which will cast the operation to signed respective unsigned
-64 bit integer.
+operands are @code{unsigned integer}, then the result will be unsigned.
+You can override this by using the @code{SIGNED} and @code{UNSIGNED}
+cast operators, which will cast the operation to signed respective
+unsigned 64 bit integer.
@example
mysql> select CAST(1-2 AS UNSIGNED)
@@ -31915,8 +31973,33 @@ mysql select CAST(CAST(1-2 AS UNSIGNED) AS SIGNED);
-> -1
@end example
+Note that if either operation is a floating point value (In this context
+@code{DECIMAL()} is regarded as a floating point value) the result will
+be a floating point value and is not affected by the above rule.
+
+@example
+mysql> select CAST(1 AS UNSIGNED) -2.0
+ -> -1.0
+@end example
+
+If you are using a string in an arithmetic operation, this is converted
+to a floating point number.
+
The @code{CAST()} and @code{CONVERT()} function was added in MySQL 4.0.2.
+The handing of unsigned values was changed in MySQL 4.0 to be able to
+support @code{BIGINT} values properly. If you have some code that you
+want to run in both MySQL 4.0 and 3.23 (in which case you probably can't
+use the CAST function), you can use the following trick to get a signed
+result when subtracting two unsigned integer columns:
+
+@example
+SELECT (unsigned_column_1+0.0)-(unsigned_column_2+0.0);
+@end example
+
+The idea is that the columns are converted to floating point before doing
+the subtraction.
+
@node Other Functions, Group by functions, Cast Functions, Functions
@subsection Other Functions
@@ -31941,12 +32024,14 @@ these operators have a maximum range of 64 bits.
@findex | (bitwise OR)
@findex OR, bitwise
@item |
-Bitwise OR:
+Bitwise OR
@example
mysql> select 29 | 15;
-> 31
@end example
+The result is an unsigned 64 bit integer.
+
@findex & (bitwise AND)
@findex AND, bitwise
@item &
@@ -31956,6 +32041,8 @@ mysql> select 29 & 15;
-> 13
@end example
+The result is an unsigned 64 bit integer.
+
@findex << (left shift)
@item <<
Shifts a longlong (@code{BIGINT}) number to the left:
@@ -31964,6 +32051,8 @@ mysql> select 1 << 2;
-> 4
@end example
+The result is an unsigned 64 bit integer.
+
@findex >> (right shift)
@item >>
Shifts a longlong (@code{BIGINT}) number to the right:
@@ -31972,6 +32061,8 @@ mysql> select 4 >> 2;
-> 1
@end example
+The result is an unsigned 64 bit integer.
+
@findex ~
@item ~
Invert all bits:
@@ -31980,6 +32071,8 @@ mysql> select 5 & ~1;
-> 4
@end example
+The result is an unsigned 64 bit integer.
+
@findex BIT_COUNT()
@item BIT_COUNT(N)
Returns the number of bits that are set in the argument @code{N}:
@@ -35091,6 +35184,7 @@ If MySQL encounters any errors in a multiple table rename, it
will do a reverse rename for all renamed tables to get everything back
to the original state.
+@code{RENAME TABLE} was added in MySQL 3.23.23.
@node DROP TABLE, CREATE INDEX, RENAME TABLE, Data Definition
@subsection @code{DROP TABLE} Syntax
@@ -48267,6 +48361,11 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}.
@itemize @bullet
@item
+Added @code{WITH MAX_QUERIES_PER_HOUR=#} to @code{GRANT} command.
+@item
+The type returned for all bit functions (@code{|}, @code{<<} ...) are now of
+type @code{unsigned integer}.
+@item
Added detection if @code{nan} values in MyISAM to make it possible to
repair tables with @code{nan} in float or double columns.
@item
@@ -48377,8 +48476,8 @@ able to use boolean fulltext search}.
@code{LOCATE()} and @code{INSTR()} are case sensitive if neither
argument is a binary string.
@item
-Changed @code{RND()} initialization so that @code{RND(N)} and @code{RND(N+1)}
-are more distinct.
+Changed @code{RAND()} initialization so that @code{RAND(N)} and
+@code{RAND(N+1)} are more distinct.
@item
Fixed core dump bug in @code{UPDATE ... ORDER BY}.
@item
@@ -48603,7 +48702,7 @@ not yet 100% confident in this code.
@appendixsubsec Changes in release 3.23.47
@itemize @bullet
@item
-Fixed in when using the following construct:
+Fixed bug when using the following construct:
@code{SELECT ... WHERE key=@@var_name OR $key=@@var_name2}
@item
Restrict InnoDB keys to 500 bytes.
@@ -50031,7 +50130,7 @@ that both non-threaded (@code{-lmysqlclient}) and threaded
against a threaded @code{-lmysqlclient} will need to link against
@code{libmysqlclient_r} now.
@item
-Added atomic @code{RENAME} command.
+Added atomic @code{RENAME TABLE} command.
@item
Don't count entries with @code{NULL} in @code{COUNT(DISTINCT ...)}.
@item
diff --git a/Docs/my_sys.txt b/Docs/my_sys.txt
new file mode 100644
index 00000000000..85ffc13ecb4
--- /dev/null
+++ b/Docs/my_sys.txt
@@ -0,0 +1,140 @@
+Functions i mysys: (For flags se my_sys.h)
+
+ int my_copy _A((const char *from,const char *to,myf MyFlags));
+ - Copy file
+
+ int my_delete _A((const char *name,myf MyFlags));
+ - Delete file
+
+ int my_getwd _A((string buf,uint size,myf MyFlags));
+ int my_setwd _A((const char *dir,myf MyFlags));
+ - Get and set working directory
+
+ string my_tempnam _A((const char *pfx,myf MyFlags));
+ - Make a uniq temp file name by using dir and adding something after
+ pfx to make name uniq. Name is made by adding a uniq 6 length-string
+ and TMP_EXT after pfx.
+ Returns pointer to malloced area for filename. Should be freed by
+ free().
+
+ File my_open _A((const char *FileName,int Flags,myf MyFlags));
+ File my_create _A((const char *FileName,int CreateFlags,
+ int AccsesFlags, myf MyFlags));
+ int my_close _A((File Filedes,myf MyFlags));
+ uint my_read _A((File Filedes,byte *Buffer,uint Count,myf MyFlags));
+ uint my_write _A((File Filedes,const byte *Buffer,uint Count,
+ myf MyFlags));
+ ulong my_seek _A((File fd,ulong pos,int whence,myf MyFlags));
+ ulong my_tell _A((File fd,myf MyFlags));
+ - Use instead of open,open-with-create-flag, close read and write
+ to get automatic error-messages (flag: MYF_WME) and only have
+ to test for != 0 if error (flag: MY_NABP).
+
+ int my_rename _A((const char *from,const char *to,myf MyFlags));
+ - Rename file
+
+ FILE *my_fopen _A((const char *FileName,int Flags,myf MyFlags));
+ FILE *my_fdopen _A((File Filedes,int Flags,myf MyFlags));
+ int my_fclose _A((FILE *fd,myf MyFlags));
+ uint my_fread _A((FILE *stream,byte *Buffer,uint Count,myf MyFlags));
+ uint my_fwrite _A((FILE *stream,const byte *Buffer,uint Count,
+ myf MyFlags));
+ ulong my_fseek _A((FILE *stream,ulong pos,int whence,myf MyFlags));
+ ulong my_ftell _A((FILE *stream,myf MyFlags));
+ - Same read-interface for streams as for files
+
+ gptr _mymalloc _A((uint uSize,const char *sFile,
+ uint uLine, myf MyFlag));
+ gptr _myrealloc _A((string pPtr,uint uSize,const char *sFile,
+ uint uLine, myf MyFlag));
+ void _myfree _A((gptr pPtr,const char *sFile,uint uLine));
+ int _sanity _A((const char *sFile,unsigned int uLine));
+ gptr _myget_copy_of_memory _A((const byte *from,uint length,
+ const char *sFile, uint uLine,
+ myf MyFlag));
+ - malloc(size,myflag) is mapped to this functions if not compiled
+ with -DSAFEMALLOC
+
+ void TERMINATE _A((void));
+ - Writes malloc-info on stdout if compiled with -DSAFEMALLOC.
+
+ int my_chsize _A((File fd,ulong newlength,myf MyFlags));
+ - Change size of file
+
+ void my_error _D((int nr,myf MyFlags, ...));
+ - Writes message using error number (se mysys/errors.h) on
+ stdout or curses if MYSYS_PROGRAM_USES_CURSES() is called.
+
+ void my_message _A((const char *str,myf MyFlags));
+ - Writes message-string on
+ stdout or curses if MYSYS_PROGRAM_USES_CURSES() is called.
+
+ void my_init _A((void ));
+ - Start each program (in main) with this.
+ void my_end _A((int infoflag));
+ - Gives info about program.
+ - If infoflag & MY_CHECK_ERROR prints if some files are left open
+ - If infoflag & MY_GIVE_INFO prints timing info and malloc info
+ about prog.
+
+ int my_redel _A((const char *from, const char *to, int MyFlags));
+ - Delete from before rename of to to from. Copyes state from old
+ file to new file. If MY_COPY_TIME is set sets old time.
+
+ int my_copystat _A((const char *from, const char *to, int MyFlags));
+ - Copye state from old file to new file.
+ If MY_COPY_TIME is set sets copy also time.
+
+ string my_filename _A((File fd));
+ - Give filename of open file.
+
+ int dirname _A((string to,const char *name));
+ - Copy name of directory from filename.
+
+ int test_if_hard_path _A((const char *dir_name));
+ - Test if dirname is a hard path (Starts from root)
+
+ void convert_dirname _A((string name));
+ - Convert dirname acording to system.
+ - In MSDOS changes all caracters to capitals and changes '/' to
+ '\'
+ string fn_ext _A((const char *name));
+ - Returns pointer to extension in filename
+ string fn_format _A((string to,const char *name,const char *dsk,
+ const char *form,int flag));
+ format a filename with replace of library and extension and
+ converts between different systems.
+ params to and name may be identicall
+ function dosn't change name if name != to
+ Flag may be: 1 force replace filnames library with 'dsk'
+ 2 force replace extension with 'form' */
+ 4 force Unpack filename (replace ~ with home)
+ 8 Pack filename as short as possibly for output to
+ user.
+ All open requests should allways use at least:
+ "open(fn_format(temp_buffe,name,"","",4),...)" to unpack home and
+ convert filename to system-form.
+
+ string fn_same _A((string toname,const char *name,int flag));
+ - Copys directory and extension from name to toname if neaded.
+ copy can be forced by same flags that in fn_format.
+
+ int wild_compare _A((const char *str,const char *wildstr));
+ - Compare if str matches wildstr. Wildstr can contain "*" and "?"
+ as match-characters.
+ Returns 0 if match.
+
+ void get_date _A((string to,int timeflag));
+ - Get current date in a form ready for printing.
+
+ void soundex _A((string out_pntr, string in_pntr))
+ - Makes in_pntr to a 5 chars long string. All words that sounds
+ alike have the same string.
+
+ int init_key_cache _A((ulong use_mem,ulong leave_this_much_mem));
+ - Use cacheing of keys in MISAM, PISAM, and ISAM.
+ KEY_CACHE_SIZE is a good size.
+ - Remember to lock databases for optimal cacheing
+
+ void end_key_cache _A((void));
+ - End key-cacheing.
diff --git a/Docs/mysqld_error.txt b/Docs/mysqld_error.txt
index 14f9e426fc0..7a5b6cf38d0 100644
--- a/Docs/mysqld_error.txt
+++ b/Docs/mysqld_error.txt
@@ -453,3 +453,5 @@
"Mixing of transactional and non-transactional tables is disabled",
#define ER_DUP_ARGUMENT 225
"Option '%s' used twice in statement",
+#define ER_TOO_MANY_USER_CONNECTIONS 203
+"User %-.64s has already more than 'max_user_connections' active connections",