Commit be462898 authored by monty@hundin.mysql.fi's avatar monty@hundin.mysql.fi
Browse files

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
parent e2a5c3e4
Loading
Loading
Loading
Loading
+189 −90
Original line number Diff line number Diff line
@@ -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

Docs/my_sys.txt

0 → 100644
+140 −0
Original line number Diff line number Diff line
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.
+2 −0

File changed.

Preview size limit exceeded, changes collapsed.

+2 −2

File changed.

Preview size limit exceeded, changes collapsed.

+8 −7

File changed.

Preview size limit exceeded, changes collapsed.

Loading