Commit e857f561 authored by monty@tik.mysql.fi's avatar monty@tik.mysql.fi
Browse files

Fix for INET_NTOA(N) when N >= 2^32

parent 4cae9fe9
Loading
Loading
Loading
Loading
+21 −15
Original line number Diff line number Diff line
@@ -10936,16 +10936,10 @@ CC=gcc CXX=gcc ./configure ... (options)
@enumerate
@item
For OpenServer 5.0.X you need to use GDS in Skunkware 95 (95q4c).  This
is necessary because GNU @code{gcc} 2.7.2 in Skunkware 97 does not have
GNU @code{as}.  You can also use @code{egcs} 1.1.2 or newer
@uref{http://www.egcs.com/}.  If you are using @code{egcs} 1.1.2 you have
to execute the following command:
@example
shell> cp -p /usr/include/pthread/stdtypes.h \
/usr/local/lib/gcc-lib/i386-pc-sco3.2v5.0.5/egcs-2.91.66/include/pthread/
@end example
For OpenServer 5.0.X you need to use gcc-2.95.2p1 or newer from the
Skunkware.  http://www.caldera.com/skunkware/ and choose browser
OpenServer packages or by ftp to ftp2.caldera.com in the
pub/skunkware/osr5/devtools/gcc directory.
@item
You need the port of GCC 2.5.x for this product and the Development
@@ -11031,7 +11025,6 @@ MySQL should automatically detect FSU Pthreads and link @code{mysqld}
with @code{-lgthreads -lsocket -lgthreads}.
@item
The Caldera (SCO) development libraries are re-entrant in FSU Pthreads.
Caldera claim sthat its libraries' functions are re-entrant, so they must
be reentrant with FSU Pthreads.  FSU Pthreads on OpenServer tries to use
@@ -11101,7 +11094,18 @@ CC=cc CXX=CC ./configure --prefix=/usr/local/mysql
If you want to use @code{gcc}, you must use @code{gcc} 2.95.2 or newer.
Caldera provides libsocket.so.2 at
@uref{ftp://stage.caldera.com/pub/security/tools} for 
pre-OSR506 security fixes. Also, the telnetd fix at
@url{ftp://stage.caldera.com/pub/security/openserver/CSSA-2001-SCO.10/}
as both libsocket.so.2 and libresolv.so.1 with instructions for
installing on pre-OSR506 systems.
It's probably a good idea to install the above patches before trying to
compile/use MySQL.
@node OS/2, BeOS, Other Unix Notes, Operating System Specific Notes
@subsection OS/2 Notes
MySQL uses quite a few open files. Because of this, you should add
@@ -46660,7 +46664,7 @@ Many crashes of MySQL are caused by corrupted index / data
files.  MySQL will update the data on disk, with the
@code{write()} system call, after every SQL statement and before the
client is notified about the result. (This is not true if you are running
with @code{delayed_key_writes}, in which case only the data is written.)
with @code{delay_key_write}, in which case only the data is written.)
This means that the data is safe even if @code{mysqld} crashes, as the OS will
ensure that the not flushed data is written to disk.  You can force
MySQL to sync everything to disk after every SQL command by
@@ -48945,6 +48949,8 @@ Our TODO section contains what we plan to have in 4.0. @xref{TODO MySQL 4.0}.
@appendixsubsec Changes in release 4.0.2
@itemize @bullet
§item
@code{INET_NTOA()} now returns @code{NULL} if you give it a too big argument.
@item
Don't give an error for @code{CREATE TABLE ...(... VARCHAR(0))}.
@item
@@ -49381,7 +49387,7 @@ not yet 100% confident in this code.
@item
Fixed @code{SIGINT} and @code{SIGQUIT} problems in @code{mysql}.
@item
Fixed bug in character table converts.
Fixed bug in character table converts when used with big ( > 64K) strings.
@end itemize
@node News-3.23.50, News-3.23.49, News-3.23.51, News-3.23.x
@@ -51278,7 +51284,7 @@ Put @code{CREATE TEMPORARY TABLE} commands in the update log.
@item
Fixed bug in handling of masked IP numbers in the privilege tables.
@item
Fixed bug with @code{delayed_key_writes} tables and @code{CHECK TABLE}.
Fixed bug with @code{delay_key_write} tables and @code{CHECK TABLE}.
@item
Added @code{replicate-do-db} and @code{replicate-ignore-db} options to
@code{mysqld}, to restrict which databases get replicated.
@@ -51672,7 +51678,7 @@ threads are reading from the table.
Added @code{max_write_lock_count} variable to @code{mysqld} to force a
@code{READ} lock after a certain number of @code{WRITE} locks.
@item
Inverted flag @code{delayed_key_write} on @code{show variables}.
Inverted flag @code{delay_key_write} on @code{show variables}.
@item
Renamed @code{concurrency} variable to @code{thread_concurrency}.
@item
+0 −1
Original line number Diff line number Diff line
@@ -340,7 +340,6 @@ int main(int argc,char *argv[])
  if (!status.batch)
    ignore_errors=1;				// Don't abort monitor
  signal(SIGINT, mysql_end);			// Catch SIGINT to clean up
  signal(SIGQUIT, mysql_end);			// Catch SIGQUIT to clean up

  /*
  **  Run in interactive mode like the ingres/postgres monitor
+9 −10
Original line number Diff line number Diff line
@@ -1921,24 +1921,23 @@ String* Item_func_inet_ntoa::val_str(String* str)
  uchar buf[8], *p;
  ulonglong n = (ulonglong) args[0]->val_int();
  char num[4];

  /*
    we do not know if args[0] is NULL until we have called
    We do not know if args[0] is NULL until we have called
    some val function on it if args[0] is not a constant!

    Also return null if n > 255.255.255.255
  */
  if ((null_value=args[0]->null_value))
  if ((null_value= (args[0]->null_value || n > (ulonglong) LL(4294967295))))
    return 0;					// Null value

  str->length(0);
  int8store(buf,n);
  int4store(buf,n);

  /* Now we can assume little endian. */
  
  /*
    Now we can assume little endian. 
    We handle the possibility of an 8-byte IP address however, we do
    not want to confuse those who are just using 4 byte ones
  */
  for (p= buf + 8; p > buf+4 && p[-1] == 0 ; p-- ) ;
  num[3]='.';
  while (p-- > buf)
  for (p=buf+4 ; p-- > buf ; )
  {
    uint c = *p;
    uint n1,n2;					// Try to avoid divisions