Commit 67891255 authored by unknown's avatar unknown

Added MYSQL_SERVER_SUFFIX to mysqld

Fixed bug in TRIM
changed strnmov -> strmake


BUILD/SETUP.sh:
  Removed --disable-shared
Docs/manual.texi:
  Changelog
  Installing many servers
acinclude.m4:
  Force use of db-3.2.3h
client/mysql.cc:
  cleanup
mysql-test/r/func_str.result:
  Added new TRIM test
mysql-test/t/func_str.test:
  Added new TRIM test
mysys/charset.c:
  change to use strmake instead of strnmov
mysys/mf_format.c:
  change to use strmake instead of strnmov
mysys/mf_tempfile.c:
  change to use strmake instead of strnmov
scripts/make_binary_distribution.sh:
  Removed error messages for missing files
sql/handler.cc:
  More debug
sql/item_strfunc.cc:
  Fixed bug in TRIM()
sql/mysqld.cc:
  Added MYSQL_SERVER_SUFFIX to mysqld
parent e6b40860
......@@ -26,7 +26,7 @@ debug_cflags="-DEXTRA_DEBUG -DFORCE_INIT_OF_VARS -DSAFEMALLOC -DSAFE_MUTEX -O2"
base_cxxflags="-felide-constructors -fno-exceptions -fno-rtti"
base_configs="--prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-mysqld-ldflags=-all-static --disable-shared"
base_configs="--prefix=/usr/local/mysql --enable-assembler --with-extra-charsets=complex --enable-thread-safe-client --with-mysqld-ldflags=-all-static"
alpha_configs="" # not used yet
pentium_configs=""
sparc_configs=""
......
......@@ -223,6 +223,7 @@ Installing MySQL
* OS/2:: OS/2 notes
* MySQL binaries:: MySQL binaries
* Post-installation:: Post-installation setup and testing
* Installing many servers:: Installing many servers on the same machine
* Upgrade:: Upgrading/Downgrading MySQL
Installing a MySQL Binary Distribution
......@@ -852,8 +853,9 @@ Changes in release 4.0.x (Development; Alpha)
* News-4.0.0:: Changes in release 4.0.0
Changes in release 3.23.x (Recommended; Gamma)
Changes in release 3.23.x (Recommended)
* News-3.23.32::
* News-3.23.31:: Changes in release 3.23.31
* News-3.23.30:: Changes in release 3.23.30
* News-3.23.29:: Changes in release 3.23.29
......@@ -2343,6 +2345,8 @@ Mascon is a powerful Win32 GUI for the administering MySQL server databases.
SuSE Linux (6.1 and above)
@item @uref{http://www.redhat.com/}@*
RedHat Linux (7.0 and above)
@item @uref{http://distro.conectiva.com.br}
Conectiva Linux (4.0 and above)
@end itemize
@subheading Web Development Tools that Support @strong{MySQL}
......@@ -3836,7 +3840,10 @@ We will provide hints on optimizing your system and your queries.
You are allowed to call a @strong{MySQL} developer (in moderation) and
discuss your @strong{MySQL}-related problems. This option is however
only to be used as a last result during an emergency after we have
failed to grasp the total problem with email.
failed to grasp the total problem with email. To make efficient
use of our time we need to first get all facts about the problem,
before talking on phone, to be able to work as efficiently as possible on
solving the problem.
@end itemize
@node Extended login support, , Login support, Support
......@@ -3897,6 +3904,7 @@ rate that is at least 20 % less than our standard rates.
* OS/2:: OS/2 notes
* MySQL binaries:: MySQL binaries
* Post-installation:: Post-installation setup and testing
* Installing many servers:: Installing many servers on the same machine
* Upgrade:: Upgrading/Downgrading MySQL
@end menu
......@@ -8714,7 +8722,7 @@ and remove any @code{-fomit-frame-pointer} options.
@cindex post-installation, setup and testing
@cindex testing, post-installation
@cindex setup, post-installation
@node Post-installation, Upgrade, MySQL binaries, Installing
@node Post-installation, Installing many servers, MySQL binaries, Installing
@section Post-installation Setup and Testing
@menu
......@@ -9037,28 +9045,7 @@ the same time). Generally the problem that occurs when you try to run the
second server is that it tries to use the same socket and port as the old one.
In this case you will get the error message: @code{Can't start server: Bind on
TCP/IP port: Address already in use} or @code{Can't start server : Bind on
unix socket...} You can start the new server with a different socket and
port as follows:
@tindex MYSQL_UNIX_PORT environment variable
@tindex MYSQL_TCP_PORT environment variable
@tindex Environment variable, MYSQL_UNIX_PORT
@tindex Environment variable, MYSQL_TCP_PORT
@example
shell> MYSQL_UNIX_PORT=/tmp/mysqld-new.sock
shell> MYSQL_TCP_PORT=3307
shell> export MYSQL_UNIX_PORT MYSQL_TCP_PORT
shell> scripts/mysql_install_db
shell> bin/safe_mysqld &
@end example
The environment variables appendix includes a list of other environment
variables you can use to affect @code{mysqld}. @xref{Environment variables}.
After this, you should edit your server boot script to start both daemons
with different sockets and ports. For example, it could invoke
@code{safe_mysqld} twice, but with different @code{--socket}, @code{--port},
and @code{--basedir} options for each invocation.
unix socket...}. @xref{Installing many servers}.
@item You don't have write access to @file{/tmp}
@cindex write access, tmp
......@@ -9578,8 +9565,8 @@ Output version information and exit.
@node Option files, , Command-line options, Post-installation
@subsection Option Files
@strong{MySQL} Version 3.22 can read default startup options for the server and
for clients from option files.
@strong{MySQL} Version 3.22 can read default startup options for the
server and for clients from option files.
@strong{MySQL} reads default options from the following files on Unix:
......@@ -9741,7 +9728,80 @@ shell> my_print_defaults client mysql
The above output contains all options for the groups 'client' and 'mysql'.
@node Upgrade, , Post-installation, Installing
@node Installing many servers, Upgrade, Post-installation, Installing
@section Installing many servers on the same machine
@cindex post-install, many servers
@cindex Installing many servers
@cindex Starting many servers
In some cases you may want to have many different @code{mysqld} deamons
(servers) running on the same machine. You may for example want to run
a new version of @code{MySQL} for testing together with an old version
that is in production. Another case is when you want to give different
users access to different mysqld servers that they manage themself.
One way to get a new server running is by starting it with a different
socket and port as follows:
@tindex MYSQL_UNIX_PORT environment variable
@tindex MYSQL_TCP_PORT environment variable
@tindex Environment variable, MYSQL_UNIX_PORT
@tindex Environment variable, MYSQL_TCP_PORT
@example
shell> MYSQL_UNIX_PORT=/tmp/mysqld-new.sock
shell> MYSQL_TCP_PORT=3307
shell> export MYSQL_UNIX_PORT MYSQL_TCP_PORT
shell> scripts/mysql_install_db
shell> bin/safe_mysqld &
@end example
The environment variables appendix includes a list of other environment
variables you can use to affect @code{mysqld}. @xref{Environment variables}.
The above is the quick and dirty way that one commonly use for testing.
The nice thing with this is that all connections you do in the above shell
will automaticly be directed to the new running server!
If you need to do this more permanently, you should create an own option
file for each server. @xref{Option files}. In your startup script that
is executed at boot time (mysql.server?) you should specify for both
servers:
@code{safe_mysqld --default-file=path-to-option-file}
At least the following options should be different per server:
@table @code
@item port=#
@item socket=path
@item pid-file=path
@end table
The following options should be different, if they are used:
@table @code
@item log=path
@item log-bin=path
@item log-update=path
@item log-isam=path
@item bdb-logdir=path
@end table
If you want more performance, you can also specify the following differently:
@table @code
@item tmpdir=path
@item bdb-tmpdir=path
@end table
@xref{Command-line options}.
If you are installing binary @strong{MySQL} versions (.tar files) and
start them with @code{./bin/safe_mysqld} then in most cases the only
option you need to add/change is the @code{socket} and @code{port}
argument to @code{safe_mysqld}.
@node Upgrade, , Installing many servers, Installing
@section Upgrading/Downgrading MySQL
@cindex upgrading
@cindex downgrading
......@@ -9826,7 +9886,11 @@ all your tables with @code{isamchk -r}, as we have made some changes in
the sort order!
@item The default return type of @code{IF} will now depend on both arguments
and not only the first argument.
@item @code{AUTO_INCREMENT} will not work with negative numbers.
@item @code{AUTO_INCREMENT} will not work with negative numbers. The reason
for this is that negative numbers caused problems when wrapping from -1 to 0.
@code{AUTO_INCREMENT} is now for MyISAM tables handled at a lower level and
is much faster than before. For MyISAM tables old numbers are also not reused
anymore, even if you delete some rows from the table.
@item @code{INNER}, @code{DELAYED}, @code{RIGHT}, @code{CASE}, @code{THEN}, @code{WHEN}, @code{ELSE}, @code{END} and @code{WHEN} are now reserved words.
@item @code{FLOAT(X)} is now a true floating-point type and not a value with
a fixed number of decimals.
......@@ -40354,7 +40418,7 @@ get more locking options.
@end itemize
@node News-3.23.x, News-3.22.x, News-4.0.x, News
@appendixsec Changes in release 3.23.x (Recommended; Gamma)
@appendixsec Changes in release 3.23.x (Recommended)
The 3.23 release has several major new features that are not
present in the 3.22 or 3.21 releases. We have added two new
......@@ -40364,12 +40428,23 @@ DB library from Sleepycat Software to implement transaction-safe
tables. The 3.23 release also includes support for database
replication between a master and many slaves.
We are not adding any more new features that are likely to break any
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,
though, so Version 3.23 is not released as a stable version yet.
We are in the future aiming to only provide bug fixes for 3.23 and
instead concentrate on the 4.0 version.
The replication code and BerkeleyDB code is still not as tested and as
the rest of the code, so we will probably need to do a couple of future
releases of 3.23 with small fixes for this part of the code. As long as
you don't use these features, you should be quite safe with
@strong{MySQL} 3.23!
Note that the above doesn't mean that replication or Berkeley DB doesn't
work; We have done a lot of testing of all code, including replication
and BDB without finding any problems. It only means that not as many
users uses this code as the rest of the code and because of this we are
not yet 100 % confident in this code.
@menu
* News-3.23.32::
* News-3.23.31:: Changes in release 3.23.31
* News-3.23.30:: Changes in release 3.23.30
* News-3.23.29:: Changes in release 3.23.29
......@@ -40404,7 +40479,18 @@ though, so Version 3.23 is not released as a stable version yet.
* News-3.23.0:: Changes in release 3.23.0
@end menu
@node News-3.23.31, News-3.23.30, News-3.23.x, News-3.23.x
@node News-3.23.32, News-3.23.31, News-3.23.x, News-3.23.x
@appendixsubsec Changes in release 3.23.32
@itemize @bullet
@item
Added missing @file{my_config.h} to RPM distribution.
@item
@code{TRIM("foo" from "foo")} didn't return an empty string.
@item
Added @code{--with-version-suffix} to configure.
@end itemize
@node News-3.23.31, News-3.23.30, News-3.23.32, News-3.23.x
@appendixsubsec Changes in release 3.23.31
@itemize @bullet
@item
......@@ -823,7 +823,7 @@ AC_DEFUN([MYSQL_CHECK_BDB_VERSION], [
bdb_version_ok=yes
# This is ugly, but about as good as it can get
elif test $db_major -eq 3 && test $db_minor -eq 2 && test $db_patch -eq 3 &&\
grep 'DB_VERSION_STRING.*g: ' [$1] > /dev/null
grep 'DB_VERSION_STRING.*h: ' [$1] > /dev/null
then
bdb_version_ok=yes
else
......
......@@ -39,7 +39,7 @@
#include "my_readline.h"
#include <signal.h>
const char *VER="11.11";
const char *VER="11.12";
gptr sql_alloc(unsigned size); // Don't use mysqld alloc for these
void sql_element_free(void *ptr);
......@@ -520,7 +520,7 @@ static void usage(int version)
puts(" -W, --pipe Use named pipes to connect to server");
#endif
printf("\n\
-P --port=... Port number to use for connection.\n\
-P, --port=... Port number to use for connection.\n\
-q, --quick Don't cache result, print it row by row. This may\n\
slow down the server if the output is suspended.\n\
Doesn't use history file.\n\
......@@ -529,7 +529,7 @@ static void usage(int version)
-S --socket=... Socket file to use for connection.\n");
#include "sslopt-usage.h"
printf("\
-t --table Output in table format.\n\
-t, --table Output in table format.\n\
-T, --debug-info Print some debug info at exit.\n\
--tee=... Append everything into outfile. See interactive help\n\
(\\h) also. Does not work in batch mode.\n");
......
......@@ -32,6 +32,8 @@ concat(':',trim(BOTH 'ab' FROM 'ababmyabab'),':',trim(BOTH '*' FROM '***sql'),':
:my:sql:
concat(':',trim(LEADING '.*' FROM '.*my'),':',trim(TRAILING '.*' FROM 'sql.*.*'),':')
:my:sql:
TRIM("foo" FROM "foo") TRIM("foo" FROM "foook") TRIM("foo" FROM "okfoo")
ok ok
insert('txs',2,1,'hi') insert('is ',4,0,'a') insert('txxxxt',2,4,'es')
this is a test
replace('aaaa','a','b') replace('aaaa','aa','b') replace('aaaa','a','bb') replace('aaaa','','b') replace('bbbb','a','c')
......
......@@ -22,6 +22,7 @@ select concat(':',trim(LEADING FROM ' left'),':',trim(TRAILING FROM ' right '),'
select concat(':',trim(' m '),':',trim(BOTH FROM ' y '),':',trim('*' FROM '*s*'),':');
select concat(':',trim(BOTH 'ab' FROM 'ababmyabab'),':',trim(BOTH '*' FROM '***sql'),':');
select concat(':',trim(LEADING '.*' FROM '.*my'),':',trim(TRAILING '.*' FROM 'sql.*.*'),':');
select TRIM("foo" FROM "foo"), TRIM("foo" FROM "foook"), TRIM("foo" FROM "okfoo");
select insert('txs',2,1,'hi'),insert('is ',4,0,'a'),insert('txxxxt',2,4,'es');
select replace('aaaa','a','b'),replace('aaaa','aa','b'),replace('aaaa','a','bb'),replace('aaaa','','b'),replace('bbbb','a','c');
......
......@@ -100,7 +100,7 @@ char *get_charsets_dir(char *buf)
DBUG_ENTER("get_charsets_dir");
if (charsets_dir != NULL)
strnmov(buf, charsets_dir, FN_REFLEN);
strmake(buf, charsets_dir, FN_REFLEN-1);
else
{
if (test_if_hard_path(sharedir) ||
......
......@@ -57,7 +57,7 @@ my_string fn_format(my_string to, const char *name, const char *dsk,
name+=(length=dirname_part(dev,(startpos=(my_string) name)));
if (length == 0 || flag & 1)
{
(void) strnmov(dev,dsk, sizeof(dev) - 2);
(void) strmake(dev,dsk, sizeof(dev) - 2);
/* Use given directory */
convert_dirname(dev); /* Fix to this OS */
}
......@@ -100,7 +100,7 @@ my_string fn_format(my_string to, const char *name, const char *dsk,
bmove(buff,(char*) name,length); /* Save name for last copy */
name=buff;
}
pos=strnmov(strmov(to,dev),name,length);
pos=strmake(strmov(to,dev),name,length);
#ifdef FN_UPPER_CASE
caseup_str(to);
#endif
......@@ -117,7 +117,7 @@ my_string fn_format(my_string to, const char *name, const char *dsk,
if (flag & 32 || (!lstat(to,&stat_buff) && S_ISLNK(stat_buff.st_mode)))
{
if (realpath(to,buff))
strnmov(to,buff,FN_REFLEN-1);
strmake(to,buff,FN_REFLEN-1);
}
}
#endif
......
......@@ -69,7 +69,7 @@ File create_temp_file(char *to, const char *dir, const char *prefix,
}
if ((res=tempnam((char*) dir,(char *) prefix)))
{
strnmov(to,res,FN_REFLEN);
strmake(to,res,FN_REFLEN-1);
(*free)(res);
file=my_create(to,0, mode, MyFlags);
}
......@@ -80,7 +80,7 @@ File create_temp_file(char *to, const char *dir, const char *prefix,
dir=getenv("TMPDIR");
if ((res=tempnam((char*) dir,(char *) prefix)))
{
strnmov(to,res,FN_REFLEN);
strmake(to,res,FN_REFLEN-1);
(*free)(res);
file=my_create(to, 0, mode, MyFlags);
}
......@@ -130,7 +130,7 @@ File create_temp_file(char *to, const char *dir, const char *prefix,
}
if ((res=tempnam((char*) dir, (char*) prefix)))
{
strnmov(to,res,FN_REFLEN);
strmake(to,res,FN_REFLEN-1);
(*free)(res);
file=my_create(to,0,
(int) (O_RDWR | O_BINARY | O_TRUNC |
......
......@@ -38,7 +38,7 @@ fi
# This should really be integrated with automake and not duplicate the
# installation list.
BASE=$TMP/my_dist
BASE=$TMP/my_dist$SUFFIX
if [ -d $BASE ] ; then
rm -r -f $BASE
......@@ -59,10 +59,28 @@ do
done
for i in extra/comp_err extra/replace extra/perror extra/resolveip \
extra/my_print_defaults isam/isamchk isam/pack_isam myisam/myisamchk myisam/myisampack sql/mysqld sql/mysqlbinlog \
client/mysql sql/mysqld sql/mysqld.sym.gz client/mysqlshow \
extra/my_print_defaults isam/isamchk isam/pack_isam myisam/myisamchk \
myisam/myisampack sql/mysqld sql/mysqlbinlog \
client/mysql sql/mysqld client/mysqlshow \
client/mysqladmin client/mysqldump client/mysqlimport client/mysqltest \
client/.libs/mysql client/.libs/mysqlshow client/.libs/mysqladmin client/.libs/mysqldump client/.libs/mysqlimport client/.libs/mysqltest
client/.libs/mysql client/.libs/mysqlshow client/.libs/mysqladmin \
client/.libs/mysqldump client/.libs/mysqlimport client/.libs/mysqltest
do
if [ -f $i ]
then
cp -p $i $BASE/bin
strip $BASE/bin
fi
done
for i in sql/mysqld.sym.gz
if [ -f $i ]
then
cp -p $i $BASE/bin
fi
done
for i in libmysql/.libs/libmysqlclient.a libmysql/.libs/libmysqlclient.so* libmysql/libmysqlclient.* libmysql_r/.libs/libmysqlclient_r.a libmysql_r/.libs/libmysqlclient_r.so* libmysql_r/libmysqlclient_r.* mysys/libmysys.a strings/libmystrings.a dbug/libdbug.a $BASE/lib
do
if [ -f $i ]
then
......@@ -75,7 +93,7 @@ rm $BASE/include/Makefile*; rm $BASE/include/*.in
cp -p tests/*.res tests/*.tst tests/*.pl $BASE/tests
cp -p support-files/* $BASE/support-files
cp -p libmysql/.libs/libmysqlclient.a libmysql/.libs/libmysqlclient.so* libmysql/libmysqlclient.* libmysql_r/.libs/libmysqlclient_r.a libmysql_r/.libs/libmysqlclient_r.so* libmysql_r/libmysqlclient_r.* mysys/libmysys.a strings/libmystrings.a dbug/libdbug.a $BASE/lib
cp -r -p sql/share/* $BASE/share/mysql
rm -f $BASE/share/mysql/Makefile* $BASE/share/mysql/*/*.OLD
......@@ -106,7 +124,7 @@ if [ -d $BASE/sql-bench/SCCS ] ; then
fi
# Change the distribution to a long descriptive name
NEW_NAME=mysql-$version-$system-$machine$SUFFIX
NEW_NAME=mysql@MYSQL_SERVER_SUFFIX@-$version-$system-$machine$SUFFIX
BASE2=$TMP/$NEW_NAME
rm -r -f $BASE2
mv $BASE $BASE2
......
......@@ -375,8 +375,8 @@ int handler::ha_open(const char *name, int mode, int test_if_locked)
{
int error;
DBUG_ENTER("handler::open");
DBUG_PRINT("enter",("db_type: %d db_stat: %d mode: %d lock_test: %d",
table->db_type, table->db_stat, mode, test_if_locked));
DBUG_PRINT("enter",("name: %s db_type: %d db_stat: %d mode: %d lock_test: %d",
name, table->db_type, table->db_stat, mode, test_if_locked));
if ((error=open(name,mode,test_if_locked)))
{
......
......@@ -930,7 +930,7 @@ String *Item_func_trim::val_str(String *str)
char *ptr=(char*) res->ptr();
char *end=ptr+res->length();
const char *r_ptr=remove_str->ptr();
while (ptr+remove_length < end && !memcmp(ptr,r_ptr,remove_length))
while (ptr+remove_length <= end && !memcmp(ptr,r_ptr,remove_length))
ptr+=remove_length;
#ifdef USE_MB
if (use_mb(default_charset_info) && !binary)
......@@ -954,7 +954,7 @@ String *Item_func_trim::val_str(String *str)
else
#endif /* USE_MB */
{
while (ptr + remove_length < end &&
while (ptr + remove_length <= end &&
!memcmp(end-remove_length,r_ptr,remove_length))
end-=remove_length;
}
......
......@@ -275,7 +275,7 @@ char mysql_real_data_home[FN_REFLEN],
blob_newline,f_fyllchar,max_sort_char,*mysqld_user,*mysqld_chroot,
*opt_init_file;
char *opt_bin_logname = 0; // this one needs to be seen in sql_parse.cc
char server_version[50]=MYSQL_SERVER_VERSION;
char server_version[60]=MYSQL_SERVER_VERSION;
const char *first_keyword="first";
const char **errmesg; /* Error messages */
const char *myisam_recover_options_str="OFF";
......@@ -1471,14 +1471,10 @@ int main(int argc, char **argv)
strmov(glob_hostname,"mysql");
strmov(pidfile_name,glob_hostname);
strmov(strcend(pidfile_name,'.'),".pid"); // Add extension
#ifdef DEMO_VERSION
strcat(server_version,"-demo");
#endif
#ifdef SHAREWARE_VERSION
strcat(server_version,"-shareware");
#endif
#ifndef DBUG_OFF
strcat(server_version,"-debug");
strxmov(strend(server_version),MYSQL_SERVER_SUFFIX,"-debug",NullS);
#else
strmov(strend(server_version),MYSQL_SERVER_SUFFIX);
#endif
#ifdef _CUSTOMSTARTUPCONFIG_
if (_cust_check_startup())
......
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