Commit 471f9ca3 authored by bell@sanja.is.com.ua's avatar bell@sanja.is.com.ua

Merge abelkin@bk-internal.mysql.com:/home/bk/mysql-4.0

into  sanja.is.com.ua:/home/bell/mysql/bk/mysql-4.0
parents 6caa0c84 1aa15c25
#! /bin/sh
path=`dirname $0`
. "$path/SETUP.sh" $@ --with-debug=full
extra_flags="$pentium64_cflags $debug_cflags $max_cflags"
c_warnings="$c_warnings $debug_extra_warnings"
cxx_warnings="$cxx_warnings $debug_extra_warnings"
extra_configs="$pentium_configs $debug_configs $max_configs"
extra_configs="$extra_configs "
. "$path/FINISH.sh"
...@@ -85,15 +85,18 @@ tags: ...@@ -85,15 +85,18 @@ tags:
support-files/build-tags support-files/build-tags
.PHONY: init-db bin-dist .PHONY: init-db bin-dist
# Test installation. Ports are configurable from the environment. # Target 'test' will run the regression test suite using the built server.
#
MYSQL_TEST_MANAGER_PORT = 9305 # If you are running in a shared environment, users can avoid clashing
MYSQL_TEST_MASTER_PORT = 9306 # port numbers by setting individual small numbers 1-100 to the
MYSQL_TEST_SLAVE_PORT = 9308 # environment variable MTR_BUILD_THREAD. The script "mysql-test-run"
# will then calculate the various port numbers it needs from this,
# making sure each user use different ports.
test: test:
cd mysql-test ; \ cd mysql-test ; \
./mysql-test-run \ ./mysql-test-run
--manager-port=$(MYSQL_TEST_MANAGER_PORT) \
--master_port=$(MYSQL_TEST_MASTER_PORT) \ test-force:
--slave_port=$(MYSQL_TEST_SLAVE_PORT) cd mysql-test ; \
./mysql-test-run --force
...@@ -2202,10 +2202,14 @@ AC_ARG_WITH(man, ...@@ -2202,10 +2202,14 @@ AC_ARG_WITH(man,
if test "$with_man" = "yes" if test "$with_man" = "yes"
then then
man_dirs="man" man_dirs="man"
man1_files=`ls -1 $srcdir/man/*.1 | sed -e 's;^.*man/;;'`
man1_files=`echo $man1_files`
else else
man_dirs="" man_dirs=""
man1_files=""
fi fi
AC_SUBST(man_dirs) AC_SUBST(man_dirs)
AC_SUBST(man1_files)
# Shall we build the bench code? # Shall we build the bench code?
AC_ARG_WITH(bench, AC_ARG_WITH(bench,
......
...@@ -45,6 +45,7 @@ extern "C" { ...@@ -45,6 +45,7 @@ extern "C" {
#undef HAVE_SCHED_H #undef HAVE_SCHED_H
#undef HAVE_SYS_MMAN_H #undef HAVE_SYS_MMAN_H
#undef HAVE_SYNCH_H #undef HAVE_SYNCH_H
#undef HAVE_RINT
#define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1 #define HAVE_PTHREAD_ATTR_SETSTACKSIZE 1
#define HAVE_PTHREAD_SIGMASK 1 #define HAVE_PTHREAD_SIGMASK 1
#define HAVE_PTHREAD_YIELD_ZERO_ARG 1 #define HAVE_PTHREAD_YIELD_ZERO_ARG 1
...@@ -91,6 +92,9 @@ extern "C" { ...@@ -91,6 +92,9 @@ extern "C" {
/* On NetWare, stack grows towards lower address*/ /* On NetWare, stack grows towards lower address*/
#define STACK_DIRECTION -1 #define STACK_DIRECTION -1
/* On NetWare, to fix the problem with the deletion of open files */
#define CANT_DELETE_OPEN_FILES 1
/* default directory information */ /* default directory information */
#define DEFAULT_MYSQL_HOME "sys:/mysql" #define DEFAULT_MYSQL_HOME "sys:/mysql"
#define PACKAGE "mysql" #define PACKAGE "mysql"
......
...@@ -119,16 +119,6 @@ extern void bmove_allign(gptr dst,const gptr src,uint len); ...@@ -119,16 +119,6 @@ extern void bmove_allign(gptr dst,const gptr src,uint len);
#define bmove512(A,B,C) memcpy(A,B,C) #define bmove512(A,B,C) memcpy(A,B,C)
#endif #endif
#ifdef HAVE_purify
#include <assert.h>
#define memcpy_overlap(A,B,C) \
DBUG_ASSERT((A) <= (B) || ((B)+(C)) <= (A)); \
bmove((byte*) key,(byte*) from,(size_t) length);
#else
#define memcpy_overlap(A,B,C) memcpy((A), (B), (C))
#endif /* HAVE_purify */
/* Prototypes for string functions */ /* Prototypes for string functions */
#if !defined(bfill) && !defined(HAVE_BFILL) #if !defined(bfill) && !defined(HAVE_BFILL)
......
...@@ -17,30 +17,8 @@ ...@@ -17,30 +17,8 @@
## Process this file with automake to create Makefile.in ## Process this file with automake to create Makefile.in
man_MANS = mysql.1 isamchk.1 isamlog.1 mysql_zap.1 mysqlaccess.1 \ man1_MANS = @man1_files@
mysqladmin.1 mysqld.1 mysqld_multi.1 mysqldump.1 mysqlshow.1 \ EXTRA_DIST = $(man1_MANS)
perror.1 replace.1 mysqld_safe.1 mysql_fix_privilege_tables.1
EXTRA_DIST = mysql.1.in isamchk.1.in isamlog.1.in mysql_zap.1.in \
mysqlaccess.1.in mysqladmin.1.in mysqld.1.in mysqld_multi.1.in \
mysqldump.1.in mysqlshow.1.in perror.1.in replace.1.in mysqlman.1.in \
mysqld_safe.1.in mysql_fix_privilege_tables.1.in
CLEANFILES = $(man_MANS)
SUFFIXES = .in
.in:
@RM@ -f $@ $@-t
@SED@ \
-e 's!@''MYSQL_BASE_VERSION''@!@MYSQL_BASE_VERSION@!' \
-e 's!@''sysconfdir''@!@sysconfdir@!' \
-e 's!@''bindir''@!$(bindir)!g' \
-e 's!@''libexecdir''@!$(libexecdir)!g' \
-e 's!@''localstatedir''@!$(localstatedir)!g' \
-e 's!@''MYSQL_NO_DASH_VERSION''@!@MYSQL_NO_DASH_VERSION@!' \
$< > $@-t
@MV@ $@-t $@
# Don't update the files from bitkeeper # Don't update the files from bitkeeper
%::SCCS/s.% %::SCCS/s.%
.TH isamchk 1 "19 December 2000" "MySQL @MYSQL_BASE_VERSION@" "MySQL database"
.SH NAME
.BR isamchk
\- Description, check and repair of ISAM tables.
Used without options all tables on the command will be checked for errors
.SH USAGE
isamchk [OPTIONS] tables[.ISM]
.SH SYNOPSIS
.B isamchk
.RB [ \-a | \-\-analyze ]
.RB [ \-# | \-\-debug=... ]
.RB [ \-\-character\-sets\-dir=...]
.RB [ \-C | \-\-default\-character\-set=...]
.RB [ \-d | \-\-description ]
.RB [ \-e | \-\-extend\-check ]
.RB [ \-f | \-\-force ]
.RB [ \-? | \-\-help ]
.RB [ \-i | \-\-information ]
.RB [ \-k | \-\-keys\-used=# ]
.RB [ \-l | \-\-no\-symlinks]
.RB [ \-q | \-\-quick ]
.RB [ \-r | \-\-recover ]
.RB [ \-o | \-\-safe\-recover ]
.RB [ \-O | "\-\-set\-variable var=option"]
.RB [ \-s | \-\-silent ]
.RB [ \-S | \-\-sort\-index ]
.RB [ \-R | \-\-sort\-records=#]
.RB [ \-u | \-\-unpack ]
.RB [ \-v | \-\-verbose ]
.RB [ \-V | \-\-version ]
.RB [ \-w | \-\-wait ]
.SH DESCRIPTION
.TP
.BR \-a | \-\-analyze
Analyze distribution of keys. Will make some joins in
MySQL faster.
.TP
.BR \-# | \-\-debug=...
Output debug log. Often this is 'd:t:o ,filename`
.TP
.BR \-\-character\-sets\-dir=...
Directory where character sets are
.TP
.BR \-C | \-\-default\-character\-set=...
Set the default character set
.TP
.BR \-d | \-\-description
Prints some information about table.
.TP
.BR \-e | \-\-extend\-check
Check the table VERY thoroughly. One need use this
only in extreme cases as isamchk should normally find
all errors even without this switch
.TP
.BR \-f | \-\-force
Overwrite old temporary files.
If one uses \-f when checking tables (running isamchk
without \-r), isamchk will automatically restart with
\-r on any wrong table.
.TP
.BR \-? | \-\-help
Display help and exit.
.TP
.BR \-i | \-\-information
Print statistics information about the table
.TP
.BR \-k | \-\-keys\-used=#
Used with '\-r'. Tell ISAM to update only the first
# keys. This can be used to get faster inserts!
.TP
.BR \-l | \-\-no\-symlinks
Do not follow symbolic links when repairing. Normally
isamchk repairs the table a symlink points at.
.TP
.BR \-q | \-\-quick
Used with \-r to get a faster repair. (The data file
isn't touched.) One can give a second '\-q' to force
isamchk to modify the original datafile.
.TP
.BR \-r | \-\-recover
Can fix almost anything except unique keys that aren't
unique.
.TP
.BR \-o | \-\-safe\-recover
Uses old recovery method; slower than '\-r' but can
handle a couple of cases that '\-r' cannot handle.
.TP
.BR \-O | " \-\-set\-variable var=option "
Change the value of a variable.
.TP
.BR \-s | \-\-silent
Only print errors. One can use two \-s to make isamchk
very silent
.TP
.BR \-S | \-\-sort\-index
Sort index blocks. This speeds up 'read\-next' in
applications
.TP
.BR \-R | \-\-sort\-records=#
Sort records according to an index. This makes your
data much more localized and may speed up things
(It may be VERY slow to do a sort the first time!)
.TP
.BR \-u | \-\-unpack
Unpack file packed with pack_isam.
.TP
.BR \-v | \-\-verbose
Print more information. This can be used with
\-d and \-e. Use many \-v for more verbosity!
.TP
.BR \-V | \-\-version
Print version and exit.
.TP
.BR \-w | \-\-wait
Wait if table is locked.
.SH "SEE ALSO"
isamlog(1),
mysql(1),
mysqlaccess(1),
mysqladmin(1),
mysqld(1),
mysqld_multi(1),
mysqld_safe(1),
mysqldump(1),
mysql_fix_privilege_tables(1),
mysqlshow(1),
mysql_zap(1),
perror(1),
replace(1)
.P
For more information please refer to the MySQL reference
manual, which may already be installed locally and which
is also available online at http://dev.mysql.com/doc/mysql/en
.SH BUGS
Please refer to http://bugs.mysql.com/ to report bugs.
.SH AUTHOR
Ver 1.0, distribution @MYSQL_NO_DASH_VERSION@
Michael (Monty) Widenius (monty@mysql.com),
MySQL AB (http://www.mysql.com/).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill\-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH isamlog 1 "19 December 2000" "MySQL @MYSQL_BASE_VERSION@" "MySQL database"
.SH NAME
isamlog - Write info about whats in a nisam log file.
.SH USAGE
isamlog [-?iruvIV] [-c #] [-f #] [-F filepath/] [-o #] [-R file recordpos] [-w write_file] [log-filename [table ...]]
.SH SYNOPSIS
.B isamlog
.RB [ -? | -I ]
.RB [ -V ]
.RB [ -c ]
.RB [ -f ]
.RB [ -F ]
.RB [ -i ]
.RB [ -o ]
.RB [ "-p #" ]
.RB [ -r ]
.RB [ -R ]
.RB [ -u ]
.RB [ -v ]
.RB [ -w ]
.SH DESCRIPTION
.TP
.BR isamlog
.TP
.BR -? | -I
info
.TP
.BR -V
version
.TP
.BR -c
do only # commands
.TP
.BR -f
max open files
.TP
.BR -F
file path
.TP
.BR -i
extra info
.TP
.BR -o
offset
.TP
.BR "-p #"
remove # components from path
.TP
.BR -r
recover
.TP
.BR -R
file recordposition
.TP
.BR -u
update
.TP
.BR -v
verbose
.TP
.BR -w
write file
.SH NOTE
If no file name is given isam.log is used
One can give a second and a third '-v' for more verbose.
Normaly one does a update (-u).
If a recover is done all writes and all possibly updates and deletes is done
and errors are only counted.
If one gives table names as arguments only these tables will be updated
.SH "SEE ALSO"
isamchk(1),
mysql(1),
mysqlaccess(1),
mysqladmin(1),
mysqld(1),
mysqld_multi(1),
mysqld_safe(1),
mysqldump(1),
mysql_fix_privilege_tables(1),
mysqlshow(1),
mysql_zap(1),
perror(1),
replace(1)
.P
For more information please refer to the MySQL reference
manual, which may already be installed locally and which
is also available online at http://dev.mysql.com/doc/mysql/en
.SH BUGS
Please refer to http://bugs.mysql.com/ to report bugs.
.SH AUTHOR
Ver 1.0, distribution @MYSQL_NO_DASH_VERSION@
Michael (Monty) Widenius (monty@mysql.com),
MySQL AB (http://www.mysql.com/).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH mysql 1 "19 December 2000" "MySQL @MYSQL_BASE_VERSION@" "MySQL database"
.SH NAME
mysql \- text-based client for mysqld, a SQL-based relational database daemon
.SH USAGE
mysql [OPTIONS] [Database]
.SH SYNOPSIS
.B mysql
.RB [ \-B | \-\-batch ]
.RB [ \-# | \-\-debug=
.IR logfile ]
.RB [ \-T | \-\-debug-info ]
.RB [ \-e | \-\-exec=
.IR command ]
.RB [ \-f | \-\-force ]
.RB [ \-? | \-\-help ]
.RB [ \-h | \-\-host=
.IR hostname ]
.RB [ \-n | \-\-unbuffered ]
.RB [ \-p[pwd] ]
.RI [ \-\-password=[pwd] ]
.RB [ \-P | \-\-port=
.IR pnum ]
.RB [ \-q | \-\-quick ]
.RB [ \-r | \-\-raw ]
.RB [ \-s | \-\-silent ]
.RB [ \-S | \-\-socket=
.IR snum ]
.RB [ \-u | \-\-user=
.IR uname ]
.RB [ \-v | \-\-verbose ]
.RB [ \-V | \-\-version ]
.RB [ \-w | \-\-wait ]
.SH DESCRIPTION
The
.IR mysql
program provides a curses-based interface to the SQL-based database
server daemon,
.IR mysqld (1).
Full fuller documentation, refer to the HTML documents installed with
the package.
.SH OPTIONS
.TP
.BR \-B | \-\-batch
Print results with a tab as separator,
each row on a new line.
.TP
\fB\-#\fP|\fB\-\-debug=\fP\fIlogfile\fP
Employ the specified debug log.
.TP
.BR \-T | \-\-debug-info
Print debug information upon exiting.
.TP
\fB\-e | \-\-exec=\fP\fPcommand\fP
Execute the specified command and quit
.BR ( \-\-batch
is implicit).
.TP
.BR \-f | \-\-force
Continue even if the face of a SQL error.
.TP
.BR \-? | \-\-help
Display a help message and exit.
.TP
\fB\-h\fP|\fP\-\-host=\fP\fIhostname\fP
Connect to the specified host.
.TP
.BR \-n | \-\-unbuffered
Flush the buffer after each query.
.TP
\fB\-p\fP|\fB\-\-password\fP[\fB=\fP\fIpwd\fP]
Employ the specified password when connecting to the database server.
If a password is not supplied, it will be requested interactively.
.TP
\fB\-P\fR|\fB\-\-port=\fP\fIpnum\fP
Employ the specified port number for connecting to the database server.
.TP
.BR \-q | \-\-quick
Do not cache the result; print it row by row.
This may slow down the server if the output is suspended.
.TP
.BR \-r | \-\-raw
Write fields without conversion.
(used with
.BR \-\-batch ).
.TP
.BR \-s | \-\-silent
Silent mode: reduce the amount of output.
.TP
\fB\-S\fP|\fB\-\-socket=\fP\fIsnum\fP
Employ the specified socket file for connecting to the database server.
.TP
\fB\-u\fP|\fB\-\-user=\fP\fIuname\fP
Employ the specified user name for logging in to the server.
.TP
.BR \-v | \-\-verbose
Verbose mode: write more
Specifying this option
.I twice
produces a tabular output format.
.TP
.BR \-V | \-\-version
Print the
.I mysql
version number and exit.
.TP
.BR \-w | \-\-wait
Wait and retry if the database server connection is down.
.SH FILES
.TP 2.2i
.I /etc/my.cnf
MySQL configuration file
.TP
.I @bindir@/mysql
Client executable
.TP
.I @libexecdir@/mysqld
Server executable
.TP
.I @bindir@/mysqld_safe
executable shell script for starting mysqld safely
.TP
.I @localstatedir@
location of database files
.SH EXAMPLE
You can also read a backup dump file back into MySQL with:
.TP
.BR mysql
\fP\fIdatabase\fP
.BR <
backup-file.sql
.SH "SEE ALSO"
isamchk(1),
isamlog(1),
mysqlaccess(1),
mysqladmin(1),
mysqld(1),
mysqld_multi(1),
mysqld_safe(1),
mysqldump(1),
mysql_fix_privilege_tables(1),
mysqlshow(1),
mysql_zap(1),
perror(1),
replace(1)
.P
For more information please refer to the MySQL reference
manual, which may already be installed locally and which
is also available online at http://dev.mysql.com/doc/mysql/en
.SH BUGS
Please refer to http://bugs.mysql.com/ to report bugs.
.SH AUTHOR
Ver 6.3, distribution @MYSQL_NO_DASH_VERSION@
Michael (Monty) Widenius (monty@mysql.com),
MySQL AB (http://www.mysql.com/)
This software comes with no warranty.
Manual page by R. P. C. Rodgers,
Lister Hill National Center for Biomedical Communication,
U.S. National Library of Medicine
(rodgers@nlm.nih.gov).
.\" end of man page
.TH mysql 1 "17 March 2003" "MySQL @MYSQL_BASE_VERSION@" "MySQL database"
.SH NAME
mysql_fix_privilege_tables \- Fixes MySQL privilege tables.
.SH SYNOPSIS
mysql_fix_privilege_tables [mysql_root_password]
.SH DESCRIPTION
This scripts updates the mysql.user, mysql.db, mysql.host and the
mysql.func tables to MySQL 3.22.14 and above.
This is needed if you want to use the new GRANT functions,
CREATE AGGREGATE FUNCTION or want to use the more secure passwords in 3.23
If you get 'Access denied' errors, run the script again
and give the MySQL root user password as an argument.
.SH "SEE ALSO"
isamchk(1),
isamlog(1),
mysql(1),
mysqlaccess(1),
mysqladmin(1),
mysqld(1),
mysqld_multi(1),
mysqld_safe(1),
mysqldump(1),
mysqlshow(1),
mysql_zap(1),
perror(1),
replace(1)
.P
For more information please refer to the MySQL reference
manual, which may already be installed locally and which
is also available online at http://dev.mysql.com/doc/mysql/en
.SH BUGS
Please refer to http://bugs.mysql.com/ to report bugs.
.SH AUTHOR
This manpage was written by Christian Hammers <ch@debian.org>.
MySQL is available at http://www.mysql.com/.
.\" end of man page
.TH zap 1 "19 December 2000" "MySQL @MYSQL_BASE_VERSION@" "MySQL database"
.SH NAME
zap - a perl script used to kill processes
.SH USAGE
/usr/bin/mysql_zap [-signal] [-?Ift] pattern
.SH SYNOPSIS
.B zap
.RB [ \-I | \-? ]
.RB [ \-f ]
.RB [ \-t ]
.SH DESCRIPTION
.TP
.BR zap
supports by executing
.TP
.BR \-I | \-?
info
.TP
.BR \-f
force
.TP
.BR \-t
test
.SH NOTE
If
.BR -f
isn't given, ask user for confirmation for each process to kill. If signal isn't given, try first with signal 15 and after that with signal 9. If
.BR -t
is given the processes is only shown on stdout.
.SH "SEE ALSO"
isamchk(1),
isamlog(1),
mysql(1),
mysqlaccess(1),
mysqladmin(1),
mysqld(1),
mysqld_multi(1),
mysqld_safe(1),
mysqldump(1),
mysql_fix_privilege_tables(1),
mysqlshow(1),
perror(1),
replace(1)
.P
For more information please refer to the MySQL reference
manual, which may already be installed locally and which
is also available online at http://dev.mysql.com/doc/mysql/en
.SH BUGS
Please refer to http://bugs.mysql.com/ to report bugs.
.SH AUTHOR
Ver 1.0, distribution @MYSQL_NO_DASH_VERSION@ Michael (Monty) Widenius (monty@mysql.com), MySQL AB (http://www.mysql.com/). This software comes with no warranty. Manual page by L. (Kill-9) Pedersen (kill-9@kill-9.dk), Mercurmedia Data Model Architect / system developer (http://www.mercurmedia.com)
.\" end of man page
.TH mysqlaccess 1 "19 December 2000" "MySQL @MYSQL_BASE_VERSION@" "MySQL database"
.SH NAME
.BR mysqlaccess \- Create new users to mysql.
.SH USAGE
mysqlaccess [host [user [db]]] OPTIONS
.SH SYNOPSIS
.B mysqlaccess
.RB [ \-? | \-\-help ]
.RB [ \-v | \-\-version ]
.RB [ \-p | \-\-password=# ]
.RB [ \-h | \-\-host=# ]
.RB [ \-d | \-\-db=# ]
.RB [ \-U | \-\-superuser=# ]
.RB [ \-P | \-\-spassword=# ]
.RB [ \-H | \-\-rhost=# ]
.RB [ \-\-old_server ]
.RB [ \-b | \-\-brief ]
.RB [ \-t | \-\-table ]
.RB [ \-\-relnotes]
.RB [ \-\-plan ]
.RB [ \-\-howto ]
.RB [ \-\-debug=N ]
.RB [ \-\-copy ]
.RB [ \-\-preview ]
.RB [ \-\-commit ]
.RB [ \-\-rollback ]
.SH DESCRIPTION
.TP
.BR \-? | \-\-help
display this helpscreen and exit
.TP
.BR \-v | \-\-version
print information on the program `mysqlaccess'
.TP
.BR \-u | \-\-user=#
username for logging in to the db
.TP
.BR \-p | \-\-password=#
validate password for user
.TP
.BR \-h | \-\-host=#
name or IP\-number of the host
.TP
.BR \-d | \-\-db=#
name of the database
.TP
.BR \-U | \-\-superuser=#
connect as superuser
.TP
.BR \-P | \-\-spassword=#
password for superuser
.TP
.BR \-H | \-\-rhost=#
remote MySQL\-server to connect to
.TP
.BR \-\-old_server
connect to old MySQL\-server (before v3.21) which
does not yet know how to handle full where clauses.
.TP
.BR \-b | \-\-brief
single\-line tabular report
.TP
.BR \-t | \-\-table
report in table\-format
.TP
.BR \-\-relnotes
print release\-notes
.TP
.BR \-\-plan
print suggestions/ideas for future releases
.TP
.BR \-\-howto
some examples of how to run `mysqlaccess'
.TP
.BR \-\-debug=N
enter debuglevel N (0..3)
.TP
.BR \-\-copy
reload temporary grant\-tables from original ones
.TP
.BR \-\-preview
show differences in privileges after making
changes in (temporary) grant\-tables
.TP
.BR \-\-commit
copy grant\-rules from temporary tables to grant\-tables
(!don't forget to do an mysqladmin reload)
.TP
.BR \-\-rollback
undo the last changes to the grant\-tables.
.SH NOTE
At least the user and the db must be given (even with wildcards)
If no host is given, `localhost' is assumed
Wildcards (*,?,%,_) are allowed for host, user and db, but be sure
to escape them from your shell!! (i.e., type \\* or '*')
.SH "SEE ALSO"
isamchk(1),
isamlog(1),
mysql(1),
mysqladmin(1),
mysqld(1),
mysqld_multi(1),
mysqld_safe(1),
mysqldump(1),
mysql_fix_privilege_tables(1),
mysqlshow(1),
mysql_zap(1),
perror(1),
replace(1)
.P
For more information please refer to the MySQL reference
manual, which may already be installed locally and which
is also available online at http://dev.mysql.com/doc/mysql/en
.SH BUGS
Please refer to http://bugs.mysql.com/ to report bugs.
.SH AUTHOR
Ver 1.0, distribution @MYSQL_NO_DASH_VERSION@
Michael (Monty) Widenius (monty@mysql.com),
MySQL AB (http://www.mysql.com/).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill\-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH mysqladmin 1 "19 December 2000" "MySQL @MYSQL_BASE_VERSION@" "MySQL database"
.SH NAME
mysqladmin [OPTIONS] command command.... \- A utility for performing administrative operations
.SH OPTION SYNOPSIS
.B mysqladmin
.RB [ \-# | \-\-debug=
.IR logfile ]
.RB [ \-f | \-\-force ]
.RB [ \-? | \-\-help ]
.BR [ --character-sets-dir=\fP\fIdirectory\fP ]
.RB [ \-C | \-\-compress ]
.RB [ \-h | \-\-host=[#] ]
.RB [ \-p[pwd] ]
.RI [ \-\-password=[pwd] ]
.RB [ \-P | \-\-port=
.IR pnum ]
.RB [ \-i | \-\-sleep=
.IR sec ]
.RB [ \-E | \-\-vertical ]
.RB [ \-s | \-\-silent ]
.RB [ \-S | \-\-socket=
.IR # ]
.RB [ \-r | \-\-relative ]
.RB [ \-t | \-\-timeout=
.IR # ]
.RB [ \-u | \-\-user=
.IR uname ]
.RB [ \-v | \-\-verbose ]
.RB [ \-V | \-\-version ]
.RB [ \-w | \-\-wait[=retries] ]
.SH OPTION DESCRIPTION
You can get a list of the options your version of
.IR mysqladmin
supports by executing
.BR "mysqladmin \-\-help"
.SH OPTIONS
.TP
.BR \-# | \-\-debug=\fP\fIlogfile\fP
Output debug log. Often this is 'd:t:o,filename`
.TP
.BR \-f | \-\-force
Don't ask for confirmation on drop database; with
multiple commands, continue even if an error occurs
.TP
.BR \-? | \-\-help
Display help and exit
.TP
.BR --character-sets-dir=\fP\fIdirectory\fP
Set the character set directory
.TP
.BR \-C | \-\-compress
Use compression in server/client protocol
.TP
\fB\-h\fP|\fP\-\-host=\fP\fIhostname\fP
Connect to host
.TP
\fB\-p\fP|\fB\-\-password\fP[\fB=\fP\fIpwd\fP]
Password to use when connecting to server
If password is not given it's asked from the tty
.TP
\fB\-P\fR|\fB\-\-port=\fP\fIpnum\fP
Port number to use for connection
.TP
\fB\-i\fR|\fB\-\-sleep=\fP\fIsec\fP
Execute commands again and again with a sleep between
.TP
.BR \-r | \-\-relative
Show difference between current and previous values
when used with
.BR -i
. Currently works only with
extended-status
.TP
.BR \-E | \-\-vertical
Print output vertically. Is similar to
.BR --relative,
but prints output vertically.
.TP
.BR \-s | \-\-silent
Silently exit if one can't connect to server
.TP
\fB\-S\fR|\fB\-\-socket=\fP\fIfile\fP
Socket file to use for connection
.TP
\fB\-t\fR|\fB\-\-timeout=\fP\fIsec\fP
Timeout for connection to the mysqld server
.TP
\fB\-u\fP|\fB\-\-user=\fP\fIuname\fP
User for login if not current user
.TP
.BR \-v | \-\-verbose
Write more information
.TP
.BR \-V | \-\-version
Output version information and exit
.TP
.BR \-w | \-\-wait
Wait and retry if connection is down
.SH COMMAND SYNOPSIS
.B MySQLADMIN
.RB [ "create \fP\fIdatabasename\fP "]
.RB [ "drop \fP\fIdatabasename\fP" ]
.RB [ extended-status ]
.RB [ flush-hosts ]
.RB [ flush-logs ]
.RB [ flush-tables ]
.RB [ flush-privileges ]
.RB [ " kill id,id,... " ]
.RB [ "password \fP\fInew-password\fP "]
.RB [ ping ]
.RB [ processlist ]
.RB [ reload ]
.RB [ refresh ]
.RB [ shutdown ]
.RB [ slave-start ]
.RB [ slave-stop ]
.RB [ status ]
.RB [ variables ]
.RB [ version ]
.SH COMMANDS
Where command is a one or more of: (Commands may be shortened)
.TP
.BR "create databasename"
Create a new database
.TP
.BR "drop databasename"
Delete a database and all its tables
.TP
.BR extended-status
Gives an extended status message from the server
.TP
.BR flush-hosts
Flush all cached hosts
.TP
.BR flush-logs
Flush all logs
.TP
.BR flush-status
Clear status variables
.TP
.BR flush-tables
Flush all tables
.TP
.BR flush-threads
Flush the thread cache
.TP
.BR flush-privileges
Reload grant tables (same as reload)
.TP
.BR "kill id,id,..."
Kill mysql threads
.TP
.BR "password \fP\fInew-password\fP"
Change old password to new-password
.TP
.BR ping
Check if mysqld is alive
.TP
.BR processlist
Show list of active threads in server
.TP
.BR reload
Reload grant tables
.TP
.BR refresh
Flush all tables and close and open logfiles
.TP
.BR shutdown
Take server down
.TP
.BR status
Gives a short status message from the server
.TP
.BR variables
Prints variables available
.TP
.BR version
Get version info from server
.SH "SEE ALSO"
isamchk(1),
isamlog(1),
mysql(1),
mysqlaccess(1),
mysqld(1),
mysqld_multi(1),
mysqld_safe(1),
mysqldump(1),
mysql_fix_privilege_tables(1),
mysqlshow(1),
mysql_zap(1),
perror(1),
replace(1)
.P
For more information please refer to the MySQL reference
manual, which may already be installed locally and which
is also available online at http://dev.mysql.com/doc/mysql/en
.SH BUGS
Please refer to http://bugs.mysql.com/ to report bugs.
.SH AUTHOR
Ver 1.0, distribution @MYSQL_NO_DASH_VERSION@
Michael (Monty) Widenius (monty@mysql.com),
MySQL AB (http://www.mysql.com/).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
This diff is collapsed.
.TH mysqld_multi 1 "19 December 2000" "MySQL @MYSQL_BASE_VERSION@" "MySQL database"
.SH NAME
mysqld_multi - is meant for managing several mysqld processes running in different UNIX sockets and TCP/IP ports.
.SH USAGE
mysqld_multi [OPTIONS] {start|stop|report} [GNR,GNR,GNR...]
.SH SYNOPSIS
.B mysqld_multi
.RB [ --config-file=... ]
.RB [ --example ]
.RB [ --help ]
.RB [ --log=... ]
.RB [ --mysqladmin=... ]
.RB [ --mysqld=... ]
.RB [ --no-log ]
.RB [ --password=... ]
.RB [ --tcp-ip ]
.RB [ --user=... ]
.RB [ --version ]
.SH DESCRIPTION
.TP
.BR mysqld_multi
.TP
.BR --config-file=...
Alternative config file. NOTE: This will not affect this program\'s own options (group [mysqld_multi]), but only groups [mysqld#]. Without this option everything will be searched from the ordinary my.cnf file.
.TP
.BR --example
Give an example of a config file.
.TP
.BR --help
Print this help and exit.
.TP
.BR --log=...
Log file. Full path to and the name for the log file. NOTE: If the file exists, everything will be appended.
.TP
.BR --mysqladmin=...
mysqladmin binary to be used for a server shutdown.
.TP
.BR --mysqld=...
mysqld binary to be used. Note that you can give mysqld_safe to this option also. The options are passed to mysqld. Just make sure you have mysqld in your environment variable PATH or fix mysqld_safe.
.TP
.BR --no-log
Print to stdout instead of the log file. By default the log file is turned on.
.TP
.BR --password=...
Password for user for mysqladmin.
.TP
.BR --tcp-ip
Connect to the MySQL server(s) via the TCP/IP port instead of the UNIX socket. This affects stopping and reporting. If a socket file is missing, the server may still be running, but can be accessed only via the TCP/IP port. By default connecting is done via the UNIX socket.
.TP
.BR --user=...
MySQL user for mysqladmin.
.TP
.BR --version
Print the version number and exit.
.SH NOTE
Please see the mysql manual for more detailed information on this.
.SH "SEE ALSO"
isamchk(1),
isamlog(1),
mysql(1),
mysqlaccess(1),
mysqladmin(1),
mysqld(1),
mysqld_safe(1),
mysqldump(1),
mysql_fix_privilege_tables(1),
mysqlshow(1),
mysql_zap(1),
perror(1),
replace(1)
.P
For more information please refer to the MySQL reference
manual, which may already be installed locally and which
is also available online at http://dev.mysql.com/doc/mysql/en
.SH BUGS
Please refer to http://bugs.mysql.com/ to report bugs.
.SH AUTHOR
Ver 1.0, distribution @MYSQL_NO_DASH_VERSION@
Michael (Monty) Widenius (monty@mysql.com),
MySQL AB (http://www.mysql.com/).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH safe_mysqld 1 "19 December 2000" "MySQL @MYSQL_BASE_VERSION@" "MySQL database"
.SH NAME
mysqld_safe \- start the mysqld daemon on Unix.
.SH SYNOPSIS
.B mysqld_safe
.RB [ \-\-basedir=\fP\fIpath\fP ]
.RB [ \-\-core\-file\-size=# ]
.RB [ \-\-defaults\-extra\-file=\fP\fIpath\fP ]
.RB [ \-\-defaults\-file=\fP\fIpath\fP ]
.RB [ \-\-open\-files=# ]
.RB [ \-\-datadir=\fP\fIpath\fP ]
.RB [ \-\-err\-log=\fP\fIpath \fP]
.RB [ \-\-ledir=path ]
.RB [ \-\-log=\fP\fIpath\fP ]
.RB [ \-\-no\-defaults ]
.RB [ \-\-open\-files=# ]
.RB [ \-\-pid\-file=\fP\fIpath\fP ]
.RB [ \-\-port=# ]
.RB [ \-\-socket=\fP\fIpath\fP ]
.RB [ \-\-timezone=# ]
.RB [ \-\-user=# ]
.SH DESCRIPTION
mysqld_safe adds some safety features such as restarting the server when an
error occurs and logging run-time information to a log file.
.BR
.TP
.BR \-\-basedir=\fP\fIpath \fP
.TP
.BR \-\-core\-file\-size=#
Size of the core file mysqld should be able to create. Passed to ulimit \-c.
.TP
.BR \-\-defaults\-extra\-file=\fP\fIpath \fP
.TP
.BR \-\-defaults\-file=\fP\fIpath \fP
.TP
.BR \-\-datadir=\fP\fIpath \fP
.TP
.BR \-\-err\-log=\fP\fIpath \fP
.TP
.BR \-\-ledir=\fP\fIpath \fP
Path to mysqld
.TP
.BR \-\-log=\fP\fIpath \fP
.TP
.BR \-\-no\-defaults
.TP
.BR \-\-open\-files=#
Number of files mysqld should be able to open. Passed to ulimit \-n.
.TP
.BR \-\-pid\-file=\fP\fIpath \fP
.TP
.BR \-\-port=#
.TP
.BR \-\-socket=\fP\fIpath \fP
.TP
.BR \-\-timezone=#
Set the timezone (the TZ) variable to the value of this parameter.
.TP
.BR \-\-user=#
.SH NOTE
Note that all options on the command line to mysqld_safe are passed to mysqld. If you wants to use any options in mysqld_safe that mysqld doesn't support, you must specify these in the option file.
.SH "SEE ALSO"
isamchk(1),
isamlog(1),
mysql(1),
mysqlaccess(1),
mysqladmin(1),
mysqld(1),
mysqld_multi(1),
mysqldump(1),
mysql_fix_privilege_tables(1),
mysqlshow(1),
mysql_zap(1),
perror(1),
replace(1)
.P
For more information please refer to the MySQL reference
manual, which may already be installed locally and which
is also available online at http://dev.mysql.com/doc/mysql/en
.SH BUGS
Please refer to http://bugs.mysql.com/ to report bugs.
.SH AUTHOR
Ver 1.0, distribution @MYSQL_NO_DASH_VERSION@
Michael (Monty) Widenius (monty@mysql.com),
MySQL AB (http://www.mysql.com).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill\-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH mysqldump 1 "19 December 2000" "MySQL @MYSQL_BASE_VERSION@" "MySQL database"
.SH NAME
mysqldump \- text\-based client for dumping or backing up mysql databases, tables and or data.
.SH USAGE
.BR "mysqldump [\fP\fIOPTIONS\fP] database [\fP\fItables\fP]"
.TP
OR
.BR "mysqldump [\fP\fIOPTIONS\fP] \-\-databases [\fP\fIOPTIONS\fP] DB1 [\fP\fIDB2 DB3...\fP]"
.TP
OR
.BR "mysqldump [\fP\fIOPTIONS\fP] \-\-all-databases [\fP\fIOPTIONS\fP]"
.SH OPTION SYNOPSIS
.B mysqldump
.RB [ \-A | \-\-all-databases ]
.RB [ \-a | \-\-all ]
.RB [ \-# | \-\-debug=... ]
.RB [ \-\-character-sets-dir=...]
.RB [ \-? | \-\-help ]
.RB [ \-B | \-\-databases ]
.RB [ \-c | \-\-complete-insert ]
.RB [ \-C | \-\-compress ]
.RB [ \-\-default-character-set=...]
.RB [ \-e | \-\-extended-insert ]
.RB [ \-\-add-drop-table ]
.RB [ \-\-add-locks ]
.RB [ \-\-allow-keywords ]
.RB [ \-\-delayed-insert ]
.RB [ \-F | \-\-flush-logs ]
.RB [ \-f | \-\-force ]
.RB [ \-h | \-\-host=... ]
.RB [ \-l | \-\-lock-tables ]
.RB [ \-n | \-\-no-create-db ]
.RB [ \-t | \-\-no-create-info ]
.RB [ \-d | \-\-no-data ]
.RB [ \-O | \-\-set-variable var=\fP\fIoption\fP ]
.RB [ \-\-opt ]
.RB [ \-p | \-\-password\fP\fI[=...]\fP ]
.RB [ \-P | \-\-port=... ]
.RB [ \-q | \-\-quick ]
.RB [ \-Q | \-\-quote-names ]
.RB [ \-S | \-\-socket=... ]
.RB [ \-\-tables ]
.RB [ \-T | \-\-tab=... ]
.RB [ \-u | \-\-user=# ]
.RB [ \-v | \-\-verbose ]
.RB [ \-V | \-\-version ]
.RB [ \-w | \-\-where= ]
.RB [ \-\-delayed ]
.RB [ \-e | \-\-extended-insert ]
.RB [ \-\-fields\-terminated\-by=... ]
.RB [ \-\-fields\-enclosed\-by=... ]
.RB [ \-\-fields-optionally\-enclosed\-by=... ]
.RB [ \-\-fields\-escaped\-by=... ]
.RB [ \-\-lines\-terminated\-by=... ]
.RB [ \-v | \-\-verbose ]
.RB [ \-V | \-\-version ]
.RB [ "\-O net_buffer_length=#, where # < 16M" ]
.SH DESCRIPTION
Dumping definition and data mysql database or table
.IR mysqldump
supports by executing
.TP
.BR \-A | \-\-all\-databases
Dump all the databases. This will be same as
.BR \-\-databases
with all databases selected.
.TP
.BR \-a | \-\-all
Include all MySQL specific create options.
.TP
.BR \-# | \-\-debug=...
Output debug log. Often this is 'd:t:o,filename`.
.TP
.BR \-\-character\-sets\-dir=...
Directory where character sets are
.TP
.BR \-? | \-\-help
Display this help message and exit.
.TP
.BR \-B | \-\-databases
To dump several databases. Note the difference in
usage; In this case no tables are given. All name
arguments are regarded as databasenames.
'USE db_name;' will be included in the output
.TP
.BR \-c | \-\-complete\-insert
Use complete insert statements.
.TP
.BR \-C | \-\-compress
Use compression in server/client protocol.
.TP
.BR \-\-default\-character\-set=...
Set the default character set
.TP
.BR \-e | \-\-extended\-insert
Allows utilization of the new, much faster
INSERT syntax.
.TP
.BR \-\-add\-drop\-table
Add a 'drop table' before each create.
.TP
.BR \-\-add\-locks
Add locks around insert statements.
.TP
.BR \-\-allow\-keywords
Allow creation of column names that are keywords.
.TP
.BR \-\-delayed\-insert
Insert rows with INSERT DELAYED.
.TP
.BR \-F | \-\-flush\-logs
Flush logs file in server before starting dump.
.TP
.BR \-f | \-\-force
Continue even if we get an sql\-error.
.TP
.BR \-h | \-\-host=...
Connect to host.
.TP
.BR \-l | \-\-lock\-tables
Lock all tables for read.
.TP
.BR \-n | \-\-no\-create\-db
\&'CREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name;'
will not be put in the output. The above line will
be added otherwise, if
.BR \-\-databases
or
.BR \-\-all\-databases
option was given.
.TP
.BR \-t | \-\-no\-create\-info
Don't write table creation info.
.TP
.BR \-d | \-\-no\-data
No row information.
.TP
.BR \-O | "\-\-set\-variable var=option"
give a variable a value.
.BR \-\-help
lists variables
.TP
.BR \-\-opt
Same as
.BR " \-\-add\-drop\-table \-\-add\-locks \-\-all \-\-extended\-insert \-\-quick \-\-lock\-tables "
.TP
.BR \-p | \-\-password[=...]
Password to use when connecting to server.
If password is not given it's solicited on the tty.
.TP
.BR \-P | \-\-port=...
Port number to use for connection.
.TP
.BR \-q | \-\-quick
Don't buffer query, dump directly to stdout.
.TP
.BR \-Q | \-\-quote\-names
Quote table and column names with `
.TP
.BR \-S | \-\-socket=...
Socket file to use for connection.
.TP
.BR \-\-tables
\fP\fIOverrides \fPoption
.BR \-\-databases (\-B).
.TP
.BR \-T | \-\-tab=...
Creates tab separated textfile for each table to
given path. (creates .sql and .txt files).
NOTE: This only works if mysqldump is run on
the same machine as the mysqld daemon.
.TP
.BR \-u | \-\-user=#
User for login if not current user.
.TP
.BR \-v | \-\-verbose
Print info about the various stages.
.TP
.BR \-V | \-\-version
Output version information and exit.
.TP
.BR \-w | \-\-where=
dump only selected records; QUOTES mandatory!
.TP
.BR \-\-delayed
Insert rows with the INSERT DELAYED command.
.TP
.BR \-e | \-\-extended-insert
Use the new multiline INSERT syntax. (Gives more compact and faster inserts statements.)
.TP
.BR \-\-fields\-terminated\-by=...
.TP
.BR \-\-fields\-enclosed\-by=...
.TP
.TP
.BR \-\-fields-optionally\-enclosed\-by=...
.TP
.BR \-\-fields\-escaped\-by=...
.TP
.BR \-\-lines\-terminated\-by=...
These options are used with the
.BR -T
option and have the same meaning as the corresponding clauses for LOAD DATA INFILE. See Mysql manual section 7.23 LOAD DATA INFILE Syntax.
.TP
.BR \-v | \-\-verbose
Verbose mode. Print out more information on what the program does.
.TP
.BR \-V | \-\-version
Print version information and exit.
.TP
.BR "\-O net_buffer_length=#, where # < 16M "
When creating multi-row-insert statements (as with option
.BR --extended-insert
or
.BR --opt
), mysqldump will create rows up to net_buffer_length length. If you increase this variable, you should also ensure that the max_allowed_packet variable in the MySQL server is bigger than the net_buffer_length.
.SH EXAMPLES
.TP
The most normal use of mysqldump is probably for making a backup of whole
databases. See the section on Database Backups in the MySQL Reference Manual.
.TP
mysqldump \-\-opt \fP\fIdatabase\fP > backup-file.sql
.TP
You can read this back into MySQL with:
.TP
.BR mysql
\fP\fIdatabase\fP
.BR <
backup-file.sql
.TP
or
.TP
.BR mysql
\-e 'source /patch\-to\-backup/backup\-file.sql' database
.TP
However, it's also very useful to populate another MySQL server with information from a database:
.TP
mysqldump \-\-opt \fP\fIdatabase\fP | mysql \-\-host=\fP\fIremote\-host\fP \-C database
.TP
It is possible to dump several databases with one command:
.TP
mysqldump \-\-databases database1 [ database2 database3... ] > my_databases.sql
.TP
If all the databases are wanted, one can use:
.TP
mysqldump \fP\fI\-\-all\-databases\fP > all_databases.sql
.SH "SEE ALSO"
isamchk(1),
isamlog(1),
mysql(1),
mysqlaccess(1),
mysqladmin(1),
mysqld(1),
mysqld_multi(1),
mysqld_safe(1),
mysql_fix_privilege_tables(1),
mysqlshow(1),
mysql_zap(1),
perror(1),
replace(1)
.P
For more information please refer to the MySQL reference
manual, which may already be installed locally and which
is also available online at http://dev.mysql.com/doc/mysql/en
.SH BUGS
Please refer to http://bugs.mysql.com/ to report bugs.
.SH AUTHOR
Ver 1.0, distribution @MYSQL_NO_DASH_VERSION@
Michael (Monty) Widenius (monty@mysql.com),
MySQL AB (http://www.mysql.com/).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH mysqlman 1 "20 July 2004" "MySQL @MYSQL_BASE_VERSION@" "MySQL database" .TH mysqlman 1 "20 July 2004" "MySQL" "MySQL database"
.SH NAME .SH NAME
mysqlman \- default man page for mysql mysqlman \- default man page for mysql
.SH "DESCRIPTION" .SH "DESCRIPTION"
......
.TH mysqlshow 1 "19 December 2000" "MySQL @MYSQL_BASE_VERSION@" "MySQL database"
.SH NAME
.BR mysqlshow
\- Shows the structure of a mysql database (databases,tables and columns)
.SH USAGE
shell> mysqlshow [\fP\fIOPTIONS\fP] [\fP\fIdatabase [table [column]]\fP]
.SH SYNOPSIS
.B mysqlshow
.RB [ \-# | \-\-debug=...]
.RB [ \-? | \-\-help ]
.RB [ \-c | \-\-character\-sets\-dir=...]
.RB [ \-C | \-\-compress ]
.RB [ \-h | \-\-host=... ]
.RB [ \-i | \-\-status ]
.RB [ \-k | \-\-keys ]
.RB [ \-p | \-\-password\fP\fI[=...]\fP ]
.RB [ \-P | \-\-port=... ]
.RB [ \-S | \-\-socket=... ]
.RB [ \-u | \-\-user=# ]
.RB [ \-V | \-\-version ]
.SH DESCRIPTION
.TP
.BR \-# | \-\-debug=...
output debug log. Often this is 'd:t:o,filename`
.TP
.BR \-? | \-\-help
display help and exit
.TP
.BR \-c | \-\-character\-sets\-dir=...
Directory where character sets are
.TP
.BR \-C | \-\-compress
Use compression in server/client protocol
.TP
.BR \-h | \-\-host=...
connect to host
.TP
.BR \-i | \-\-status
Shows a lot of extra information about each table
.TP
.BR \-k | \-\-keys
show keys for table
.TP
.BR \-p | \-\-password \fP\fI[=...] \fP
password to use when connecting to server
If password is not given it's asked from the tty.
.TP
.BR \-P | \-\-port=...
Port number to use for connection
.TP
.BR \-S | \-\-socket=...
Socket file to use for connection
.TP
.BR \-u | \-\-user=#
user for login if not current user
.TP
.BR \-V | \-\-version
output version information and exit
.SH NOTE
If last argument contains a shell or SQL wildcard (*,?,% or _) then only
what's matched by the wildcard is shown.
If no database is given then all matching databases are shown.
If no table is given then all matching tables in database are shown
If no column is given then all matching columns and columntypes in table
are shown
.SH "SEE ALSO"
isamchk(1),
isamlog(1),
mysql(1),
mysqlaccess(1),
mysqladmin(1),
mysqld(1),
mysqld_multi(1),
mysqld_safe(1),
mysqldump(1),
mysql_fix_privilege_tables(1),
mysql_zap(1),
perror(1),
replace(1)
.P
For more information please refer to the MySQL reference
manual, which may already be installed locally and which
is also available online at http://dev.mysql.com/doc/mysql/en
.SH BUGS
Please refer to http://bugs.mysql.com/ to report bugs.
.SH AUTHOR
Ver 1.0, distribution @MYSQL_NO_DASH_VERSION@
Michael (Monty) Widenius (monty@mysql.com),
MySQL AB (http://www.mysql.com/).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill\-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH perror 1 "19 December 2000" "MySQL @MYSQL_BASE_VERSION@" "MySQL database"
.SH NAME
perror \- describes a system or MySQL error code.
.SH SYNOPSIS
perror [OPTIONS] [ERRORCODE [ERRORCODE...]]
.SH DESCRIPTION
Can be used to display a description for a system error code, or an MyISAM/ISAM table handler error code.
The error messages are mostly system dependent.
.SH OPTIONS
.TP
.BR \-? | \-\-help
Displays this help and exits.
.TP
.BR \-I | \-\-info
Synonym for the above.
.TP
.BR \-s | \-\-silent
Only print the error message
.TP
.BR \-v | \-\-verbose
Print error code and message (default).
.TP
.BR \-V | \-\-version
Displays version information and exits.
.SH EXAMPLE
shell> perror 64 79
Error code 64: Machine is not on the network
Error code 79: Can not access a needed shared library
.SH "SEE ALSO"
isamchk(1),
isamlog(1),
mysql(1),
mysqlaccess(1),
mysqladmin(1),
mysqld(1),
mysqld_multi(1),
mysqld_safe(1),
mysqldump(1),
mysql_fix_privilege_tables(1),
mysqlshow(1),
mysql_zap(1),
replace(1)
.P
For more information please refer to the MySQL reference
manual, which may already be installed locally and which
is also available online at http://dev.mysql.com/doc/mysql/en
.SH BUGS
Please refer to http://bugs.mysql.com/ to report bugs.
.SH AUTHOR
Ver 1.0, distribution @MYSQL_NO_DASH_VERSION@
Michael (Monty) Widenius (monty@mysql.com),
MySQL AB (http://www.mysql.com/).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill\-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
.TH replace 1 "19 December 2000" "MySQL @MYSQL_BASE_VERSION@" "MySQL database"
.SH NAME
.TP
replace - A utility program that is used by msql2mysql, but that has more general applicability as well. replace changes strings in place in files or on the standard input. Uses a finite state machine to match longer strings first. Can be used to swap strings.
.SH USAGE
replace [-?svIV] from to from to ... -- [files]
.TP
or
.TP
replace [-?svIV] from to from to ... < fromfile > tofile
.SH SYNOPSIS
.B replace
.RB [ -? | -I ]
.RB [ -s ]
.RB [ -v ]
.SH DESCRIPTION
.TP
.BR replace
.TP
.BR -? | -I
info
.TP
.BR -s
silent
.TP
.BR -v
verbose
.SH EXTRA INFO
.B Special characters in from string:
.TP
\\^
Match start of line.
.TP
\\$
Match end of line.
.TP
\\b
Match space-character, start of line or end of line. For a end \\b the next replace starts locking at the end space-character. A \\b alone in a string matches only a space-character.
.SH EXAMPLE
this command swaps a and b in the given files:
.TP
shell> replace a b b a -- file1 file2 ...
.SH "SEE ALSO"
isamchk(1),
isamlog(1),
mysql(1),
mysqlaccess(1),
mysqladmin(1),
mysqld(1),
mysqld_multi(1),
mysqld_safe(1),
mysqldump(1),
mysql_fix_privilege_tables(1),
mysqlshow(1),
mysql_zap(1),
perror(1),
.P
For more information please refer to the MySQL reference
manual, which may already be installed locally and which
is also available online at http://dev.mysql.com/doc/mysql/en
.SH BUGS
Please refer to http://bugs.mysql.com/ to report bugs.
.SH AUTHOR
Ver 1.0, distribution @MYSQL_NO_DASH_VERSION@
Michael (Monty) Widenius (monty@mysql.com),
MySQL AB (http://www.mysql.com/).
This software comes with no warranty.
Manual page by L. (Kill-9) Pedersen
(kill-9@kill-9.dk), Mercurmedia Data Model Architect /
system developer (http://www.mercurmedia.com)
.\" end of man page
...@@ -1306,7 +1306,7 @@ uint _mi_get_binary_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag, ...@@ -1306,7 +1306,7 @@ uint _mi_get_binary_pack_key(register MI_KEYDEF *keyinfo, uint nod_flag,
} }
DBUG_PRINT("info",("key: %p from: %p length: %u", DBUG_PRINT("info",("key: %p from: %p length: %u",
key, from, length)); key, from, length));
memcpy_overlap((byte*) key, (byte*) from, (size_t) length); memmove((byte*) key, (byte*) from, (size_t) length);
key+=length; key+=length;
from+=length; from+=length;
} }
......
...@@ -201,6 +201,23 @@ MYSQL_MANAGER_PORT=9305 # needs to be out of the way of slaves ...@@ -201,6 +201,23 @@ MYSQL_MANAGER_PORT=9305 # needs to be out of the way of slaves
MYSQL_MANAGER_PW_FILE=$MYSQL_TEST_DIR/var/tmp/manager.pwd MYSQL_MANAGER_PW_FILE=$MYSQL_TEST_DIR/var/tmp/manager.pwd
MYSQL_MANAGER_LOG=$MYSQL_TEST_DIR/var/log/manager.log MYSQL_MANAGER_LOG=$MYSQL_TEST_DIR/var/log/manager.log
MYSQL_MANAGER_USER=root MYSQL_MANAGER_USER=root
#
# To make it easier for different devs to work on the same host,
# an environment variable can be used to control all ports. A small
# number is to be used, 0 - 16 or similar.
#
if [ -n "$MTR_BUILD_THREAD" ] ; then
MASTER_MYPORT=`expr $MTR_BUILD_THREAD '*' 5 + 10000`
MYSQL_MANAGER_PORT=`expr $MASTER_MYPORT + 2`
SLAVE_MYPORT=`expr $MASTER_MYPORT + 3`
echo "Using MTR_BUILD_THREAD = $MTR_BUILD_THREAD"
echo "Using MASTER_MYPORT = $MASTER_MYPORT"
echo "Using MYSQL_MANAGER_PORT = $MYSQL_MANAGER_PORT"
echo "Using SLAVE_MYPORT = $SLAVE_MYPORT"
fi
NO_SLAVE=0 NO_SLAVE=0
USER_TEST= USER_TEST=
FAILED_CASES= FAILED_CASES=
......
...@@ -447,3 +447,21 @@ drop table t2; ...@@ -447,3 +447,21 @@ drop table t2;
drop table t3; drop table t3;
drop table t4; drop table t4;
drop table t5; drop table t5;
create table t1 (c1 int);
insert into t1 values (1);
handler t1 open;
handler t1 read first;
c1
1
send the below to another connection, do not wait for the result
optimize table t1;
proceed with the normal connection
handler t1 read next;
c1
1
handler t1 close;
read the result from the other connection
Table Op Msg_type Msg_text
test.t1 optimize status OK
proceed with the normal connection
drop table t1;
...@@ -462,3 +462,13 @@ select count(*) from t1 where a is null; ...@@ -462,3 +462,13 @@ select count(*) from t1 where a is null;
count(*) count(*)
2 2
drop table t1; drop table t1;
create table t1 (
c1 varchar(32),
key (c1)
) engine=myisam;
alter table t1 disable keys;
insert into t1 values ('a'), ('b');
select c1 from t1 order by c1 limit 1;
c1
a
drop table t1;
...@@ -2431,3 +2431,57 @@ AND FK_firma_id = 2; ...@@ -2431,3 +2431,57 @@ AND FK_firma_id = 2;
COUNT(*) COUNT(*)
0 0
drop table t1; drop table t1;
CREATE TABLE t1 (a INT, b INT);
(SELECT a, b AS c FROM t1) ORDER BY c+1;
a c
(SELECT a, b AS c FROM t1) ORDER BY b+1;
a c
SELECT a, b AS c FROM t1 ORDER BY c+1;
a c
SELECT a, b AS c FROM t1 ORDER BY b+1;
a c
drop table t1;
DROP TABLE IF EXISTS t1, t2;
CREATE TABLE t1 ( a INT NOT NULL, b INT NOT NULL, UNIQUE idx (a,b) );
INSERT INTO t1 VALUES (1,1),(1,2),(1,3),(1,4);
CREATE TABLE t2 ( a INT NOT NULL, b INT NOT NULL, c INT );
INSERT INTO t2 VALUES ( 1,10,1), (1,10,2), (1,11,1), (1,11,2), (1,2,1), (1,2,2),
(1,2,3);
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',c) AS c, COUNT(*) AS d FROM t2 LEFT JOIN
t1 ON t2.a = t1.a AND t2.b = t1.b GROUP BY a, b, c;
a b c d
1 2 1 1
1 2 2 1
1 2 3 1
1 10 2
1 11 2
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',c) AS c, COUNT(*) AS d FROM t2 LEFT JOIN
t1 ON t2.a = t1.a AND t2.b = t1.b GROUP BY t1.a, t1.b, c;
a b c d
1 10 4
1 2 1 1
1 2 2 1
1 2 3 1
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',c) AS c, COUNT(*) AS d FROM t2 LEFT JOIN
t1 ON t2.a = t1.a AND t2.b = t1.b GROUP BY t2.a, t2.b, c;
a b c d
1 2 1 1
1 2 2 1
1 2 3 1
1 10 2
1 11 2
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',c) AS c, COUNT(*) AS d FROM t2,t1
WHERE t2.a = t1.a AND t2.b = t1.b GROUP BY a, b, c;
a b c d
1 2 1 1
1 2 2 1
1 2 3 1
DROP TABLE IF EXISTS t1, t2;
create table t1 (f1 int primary key, f2 int);
create table t2 (f3 int, f4 int, primary key(f3,f4));
insert into t1 values (1,1);
insert into t2 values (1,1),(1,2);
select distinct count(f2) >0 from t1 left join t2 on f1=f3 group by f1;
count(f2) >0
1
drop table t1,t2;
...@@ -339,3 +339,32 @@ drop table t2; ...@@ -339,3 +339,32 @@ drop table t2;
drop table t3; drop table t3;
drop table t4; drop table t4;
drop table t5; drop table t5;
#
# Bug#14397 - OPTIMIZE TABLE with an open HANDLER causes a crash
#
create table t1 (c1 int);
insert into t1 values (1);
# client 1
handler t1 open;
handler t1 read first;
# client 2
connect (con2,localhost,root,,);
connection con2;
--exec echo send the below to another connection, do not wait for the result
send optimize table t1;
--sleep 1
# client 1
--exec echo proceed with the normal connection
connection default;
handler t1 read next;
handler t1 close;
# client 2
--exec echo read the result from the other connection
connection con2;
reap;
# client 1
--exec echo proceed with the normal connection
connection default;
drop table t1;
...@@ -446,3 +446,15 @@ explain select count(*) from t1 where a is null; ...@@ -446,3 +446,15 @@ explain select count(*) from t1 where a is null;
select count(*) from t1 where a is null; select count(*) from t1 where a is null;
drop table t1; drop table t1;
#
# Bug#14616 - Freshly imported table returns error 124 when using LIMIT
#
create table t1 (
c1 varchar(32),
key (c1)
) engine=myisam;
alter table t1 disable keys;
insert into t1 values ('a'), ('b');
select c1 from t1 order by c1 limit 1;
drop table t1;
...@@ -1983,3 +1983,42 @@ AND FK_firma_id = 2; ...@@ -1983,3 +1983,42 @@ AND FK_firma_id = 2;
drop table t1; drop table t1;
#
# Bug 7672 Unknown column error in order clause
#
CREATE TABLE t1 (a INT, b INT);
(SELECT a, b AS c FROM t1) ORDER BY c+1;
(SELECT a, b AS c FROM t1) ORDER BY b+1;
SELECT a, b AS c FROM t1 ORDER BY c+1;
SELECT a, b AS c FROM t1 ORDER BY b+1;
drop table t1;
#
# Bug #3874 (function in GROUP and LEFT JOIN)
#
DROP TABLE IF EXISTS t1, t2;
CREATE TABLE t1 ( a INT NOT NULL, b INT NOT NULL, UNIQUE idx (a,b) );
INSERT INTO t1 VALUES (1,1),(1,2),(1,3),(1,4);
CREATE TABLE t2 ( a INT NOT NULL, b INT NOT NULL, c INT );
INSERT INTO t2 VALUES ( 1,10,1), (1,10,2), (1,11,1), (1,11,2), (1,2,1), (1,2,2),
(1,2,3);
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',c) AS c, COUNT(*) AS d FROM t2 LEFT JOIN
t1 ON t2.a = t1.a AND t2.b = t1.b GROUP BY a, b, c;
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',c) AS c, COUNT(*) AS d FROM t2 LEFT JOIN
t1 ON t2.a = t1.a AND t2.b = t1.b GROUP BY t1.a, t1.b, c;
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',c) AS c, COUNT(*) AS d FROM t2 LEFT JOIN
t1 ON t2.a = t1.a AND t2.b = t1.b GROUP BY t2.a, t2.b, c;
SELECT t2.a, t2.b, IF(t1.b IS NULL,'',c) AS c, COUNT(*) AS d FROM t2,t1
WHERE t2.a = t1.a AND t2.b = t1.b GROUP BY a, b, c;
DROP TABLE IF EXISTS t1, t2;
#
# Bug #13855 select distinct with group by caused server crash
#
create table t1 (f1 int primary key, f2 int);
create table t2 (f3 int, f4 int, primary key(f3,f4));
insert into t1 values (1,1);
insert into t2 values (1,1),(1,2);
select distinct count(f2) >0 from t1 left join t2 on f1=f3 group by f1;
drop table t1,t2;
...@@ -18,7 +18,6 @@ path=`dirname $0` ...@@ -18,7 +18,6 @@ path=`dirname $0`
if test -e "Makefile"; then make -k clean; fi if test -e "Makefile"; then make -k clean; fi
# remove files # remove files
rm -f NEW-RPMS/*
rm -f */.deps/*.P rm -f */.deps/*.P
rm -f */*.linux rm -f */*.linux
......
...@@ -12,7 +12,6 @@ path=`dirname $0` ...@@ -12,7 +12,6 @@ path=`dirname $0`
if test -e "Makefile"; then make -k clean; fi if test -e "Makefile"; then make -k clean; fi
# remove files # remove files
rm -f NEW-RPMS/*
rm -f */.deps/*.P rm -f */.deps/*.P
rm -rf Makefile.in.bk rm -rf Makefile.in.bk
......
...@@ -21,7 +21,6 @@ if test -e "Makefile"; then ...@@ -21,7 +21,6 @@ if test -e "Makefile"; then
fi fi
# remove other files # remove other files
rm -f NEW-RPMS/*
rm -f */.deps/*.P rm -f */.deps/*.P
rm -rf Makefile.in.bk rm -rf Makefile.in.bk
......
...@@ -173,7 +173,7 @@ void report_stats() ...@@ -173,7 +173,7 @@ void report_stats()
mtr_log("\nFailed %u/%u test(s), %.02f%% successful.\n", mtr_log("\nFailed %u/%u test(s), %.02f%% successful.\n",
total_fail, total_test, percent); total_fail, total_test, percent);
mtr_log("\nThe .out and .err files in %s may give you some\n", result_dir); mtr_log("\nThe .out and .err files in %s may give you some\n", result_dir);
mtr_log("hint of what when wrong.\n"); mtr_log("hint of what went wrong.\n");
mtr_log("\nIf you want to report this error, please first read the documentation\n"); mtr_log("\nIf you want to report this error, please first read the documentation\n");
mtr_log("at: http://www.mysql.com/doc/M/y/MySQL_test_suite.html\n"); mtr_log("at: http://www.mysql.com/doc/M/y/MySQL_test_suite.html\n");
} }
......
...@@ -275,7 +275,7 @@ cd $SOURCE ...@@ -275,7 +275,7 @@ cd $SOURCE
for i in COPYING ChangeLog README EXCEPTIONS-CLIENT\ for i in COPYING ChangeLog README EXCEPTIONS-CLIENT\
INSTALL-SOURCE INSTALL-WIN \ INSTALL-SOURCE INSTALL-WIN \
INSTALL-WIN-SOURCE \ INSTALL-WIN-SOURCE \
Docs/INSTALL-BINARY Docs/INSTALL-BINARY Docs/manual.chm
do do
print_debug "Copying file '$i'" print_debug "Copying file '$i'"
......
...@@ -348,7 +348,18 @@ bool Item_field::fix_fields(THD *thd,TABLE_LIST *tables) ...@@ -348,7 +348,18 @@ bool Item_field::fix_fields(THD *thd,TABLE_LIST *tables)
{ {
Field *tmp; Field *tmp;
if (!(tmp=find_field_in_tables(thd,this,tables))) if (!(tmp=find_field_in_tables(thd,this,tables)))
{
if (thd->lex.select_lex.is_item_list_lookup)
{
Item **res= find_item_in_list(this, thd->lex.select_lex.item_list);
if (res && (*res)->type() == Item::FIELD_ITEM)
{
set_field((*((Item_field**)res))->field);
return 0;
}
}
return 1; return 1;
}
set_field(tmp); set_field(tmp);
} }
else if (thd && thd->set_query_id && field->query_id != thd->query_id) else if (thd && thd->set_query_id && field->query_id != thd->query_id)
......
...@@ -549,7 +549,8 @@ int mysql_ha_open(THD *thd, TABLE_LIST *tables, bool reopen= 0); ...@@ -549,7 +549,8 @@ int mysql_ha_open(THD *thd, TABLE_LIST *tables, bool reopen= 0);
int mysql_ha_close(THD *thd, TABLE_LIST *tables); int mysql_ha_close(THD *thd, TABLE_LIST *tables);
int mysql_ha_read(THD *, TABLE_LIST *,enum enum_ha_read_modes,char *, int mysql_ha_read(THD *, TABLE_LIST *,enum enum_ha_read_modes,char *,
List<Item> *,enum ha_rkey_function,Item *,ha_rows,ha_rows); List<Item> *,enum ha_rkey_function,Item *,ha_rows,ha_rows);
int mysql_ha_flush(THD *thd, TABLE_LIST *tables, uint mode_flags); int mysql_ha_flush(THD *thd, TABLE_LIST *tables, uint mode_flags,
bool is_locked);
/* mysql_ha_flush mode_flags bits */ /* mysql_ha_flush mode_flags bits */
#define MYSQL_HA_CLOSE_FINAL 0x00 #define MYSQL_HA_CLOSE_FINAL 0x00
#define MYSQL_HA_REOPEN_ON_USAGE 0x01 #define MYSQL_HA_REOPEN_ON_USAGE 0x01
......
...@@ -390,7 +390,8 @@ bool close_cached_tables(THD *thd, bool if_wait_for_refresh, ...@@ -390,7 +390,8 @@ bool close_cached_tables(THD *thd, bool if_wait_for_refresh,
thd->proc_info="Flushing tables"; thd->proc_info="Flushing tables";
close_old_data_files(thd,thd->open_tables,1,1); close_old_data_files(thd,thd->open_tables,1,1);
mysql_ha_flush(thd, tables, MYSQL_HA_REOPEN_ON_USAGE | MYSQL_HA_FLUSH_ALL); mysql_ha_flush(thd, tables, MYSQL_HA_REOPEN_ON_USAGE | MYSQL_HA_FLUSH_ALL,
TRUE);
bool found=1; bool found=1;
/* Wait until all threads has closed all the tables we had locked */ /* Wait until all threads has closed all the tables we had locked */
DBUG_PRINT("info", ("Waiting for others threads to close their open tables")); DBUG_PRINT("info", ("Waiting for others threads to close their open tables"));
...@@ -863,7 +864,7 @@ TABLE *open_table(THD *thd,const char *db,const char *table_name, ...@@ -863,7 +864,7 @@ TABLE *open_table(THD *thd,const char *db,const char *table_name,
} }
/* close handler tables which are marked for flush */ /* close handler tables which are marked for flush */
mysql_ha_flush(thd, (TABLE_LIST*) NULL, MYSQL_HA_REOPEN_ON_USAGE); mysql_ha_flush(thd, (TABLE_LIST*) NULL, MYSQL_HA_REOPEN_ON_USAGE, TRUE);
for (table=(TABLE*) hash_search(&open_cache,(byte*) key,key_length) ; for (table=(TABLE*) hash_search(&open_cache,(byte*) key,key_length) ;
table && table->in_use ; table && table->in_use ;
...@@ -1262,7 +1263,7 @@ bool wait_for_tables(THD *thd) ...@@ -1262,7 +1263,7 @@ bool wait_for_tables(THD *thd)
{ {
thd->some_tables_deleted=0; thd->some_tables_deleted=0;
close_old_data_files(thd,thd->open_tables,0,dropping_tables != 0); close_old_data_files(thd,thd->open_tables,0,dropping_tables != 0);
mysql_ha_flush(thd, (TABLE_LIST*) NULL, MYSQL_HA_REOPEN_ON_USAGE); mysql_ha_flush(thd, (TABLE_LIST*) NULL, MYSQL_HA_REOPEN_ON_USAGE, TRUE);
if (!table_is_used(thd->open_tables,1)) if (!table_is_used(thd->open_tables,1))
break; break;
(void) pthread_cond_wait(&COND_refresh,&LOCK_open); (void) pthread_cond_wait(&COND_refresh,&LOCK_open);
......
...@@ -217,7 +217,7 @@ void THD::cleanup(void) ...@@ -217,7 +217,7 @@ void THD::cleanup(void)
close_thread_tables(this); close_thread_tables(this);
} }
mysql_ha_flush(this, (TABLE_LIST*) 0, mysql_ha_flush(this, (TABLE_LIST*) 0,
MYSQL_HA_CLOSE_FINAL | MYSQL_HA_FLUSH_ALL); MYSQL_HA_CLOSE_FINAL | MYSQL_HA_FLUSH_ALL, FALSE);
hash_free(&handler_tables_hash); hash_free(&handler_tables_hash);
close_temporary_tables(this); close_temporary_tables(this);
hash_free(&user_vars); hash_free(&user_vars);
......
...@@ -357,6 +357,7 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, ...@@ -357,6 +357,7 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables,
ha_rows select_limit,ha_rows offset_limit) ha_rows select_limit,ha_rows offset_limit)
{ {
TABLE_LIST *hash_tables; TABLE_LIST *hash_tables;
TABLE **table_ptr;
TABLE *table; TABLE *table;
int err; int err;
int keyno=-1; int keyno=-1;
...@@ -379,6 +380,27 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables, ...@@ -379,6 +380,27 @@ int mysql_ha_read(THD *thd, TABLE_LIST *tables,
DBUG_PRINT("info-in-hash",("'%s'.'%s' as '%s' tab %p", DBUG_PRINT("info-in-hash",("'%s'.'%s' as '%s' tab %p",
hash_tables->db, hash_tables->real_name, hash_tables->db, hash_tables->real_name,
hash_tables->alias, table)); hash_tables->alias, table));
/* Table might have been flushed. */
if (table && (table->version != refresh_version))
{
/*
We must follow the thd->handler_tables chain, as we need the
address of the 'next' pointer referencing this table
for close_thread_table().
*/
for (table_ptr= &(thd->handler_tables);
*table_ptr && (*table_ptr != table);
table_ptr= &(*table_ptr)->next)
{}
VOID(pthread_mutex_lock(&LOCK_open));
if (close_thread_table(thd, table_ptr))
{
/* Tell threads waiting for refresh that something has happened */
VOID(pthread_cond_broadcast(&COND_refresh));
}
VOID(pthread_mutex_unlock(&LOCK_open));
table= hash_tables->table= NULL;
}
if (!table) if (!table)
{ {
/* /*
...@@ -593,6 +615,7 @@ err0: ...@@ -593,6 +615,7 @@ err0:
MYSQL_HA_REOPEN_ON_USAGE mark for reopen. MYSQL_HA_REOPEN_ON_USAGE mark for reopen.
MYSQL_HA_FLUSH_ALL flush all tables, not only MYSQL_HA_FLUSH_ALL flush all tables, not only
those marked for flush. those marked for flush.
is_locked If LOCK_open is locked.
DESCRIPTION DESCRIPTION
The list of HANDLER tables may be NULL, in which case all HANDLER The list of HANDLER tables may be NULL, in which case all HANDLER
...@@ -600,7 +623,6 @@ err0: ...@@ -600,7 +623,6 @@ err0:
If 'tables' is NULL and MYSQL_HA_FLUSH_ALL is not set, If 'tables' is NULL and MYSQL_HA_FLUSH_ALL is not set,
all HANDLER tables marked for flush are closed. all HANDLER tables marked for flush are closed.
Broadcasts a COND_refresh condition, for every table closed. Broadcasts a COND_refresh condition, for every table closed.
The caller must lock LOCK_open.
NOTE NOTE
Since mysql_ha_flush() is called when the base table has to be closed, Since mysql_ha_flush() is called when the base table has to be closed,
...@@ -610,10 +632,12 @@ err0: ...@@ -610,10 +632,12 @@ err0:
0 ok 0 ok
*/ */
int mysql_ha_flush(THD *thd, TABLE_LIST *tables, uint mode_flags) int mysql_ha_flush(THD *thd, TABLE_LIST *tables, uint mode_flags,
bool is_locked)
{ {
TABLE_LIST *tmp_tables; TABLE_LIST *tmp_tables;
TABLE **table_ptr; TABLE **table_ptr;
bool did_lock= FALSE;
DBUG_ENTER("mysql_ha_flush"); DBUG_ENTER("mysql_ha_flush");
DBUG_PRINT("enter", ("tables: %p mode_flags: 0x%02x", tables, mode_flags)); DBUG_PRINT("enter", ("tables: %p mode_flags: 0x%02x", tables, mode_flags));
...@@ -637,6 +661,12 @@ int mysql_ha_flush(THD *thd, TABLE_LIST *tables, uint mode_flags) ...@@ -637,6 +661,12 @@ int mysql_ha_flush(THD *thd, TABLE_LIST *tables, uint mode_flags)
(*table_ptr)->table_cache_key, (*table_ptr)->table_cache_key,
(*table_ptr)->real_name, (*table_ptr)->real_name,
(*table_ptr)->table_name)); (*table_ptr)->table_name));
/* The first time it is required, lock for close_thread_table(). */
if (! did_lock && ! is_locked)
{
VOID(pthread_mutex_lock(&LOCK_open));
did_lock= TRUE;
}
mysql_ha_flush_table(thd, table_ptr, mode_flags); mysql_ha_flush_table(thd, table_ptr, mode_flags);
continue; continue;
} }
...@@ -655,6 +685,12 @@ int mysql_ha_flush(THD *thd, TABLE_LIST *tables, uint mode_flags) ...@@ -655,6 +685,12 @@ int mysql_ha_flush(THD *thd, TABLE_LIST *tables, uint mode_flags)
if ((mode_flags & MYSQL_HA_FLUSH_ALL) || if ((mode_flags & MYSQL_HA_FLUSH_ALL) ||
((*table_ptr)->version != refresh_version)) ((*table_ptr)->version != refresh_version))
{ {
/* The first time it is required, lock for close_thread_table(). */
if (! did_lock && ! is_locked)
{
VOID(pthread_mutex_lock(&LOCK_open));
did_lock= TRUE;
}
mysql_ha_flush_table(thd, table_ptr, mode_flags); mysql_ha_flush_table(thd, table_ptr, mode_flags);
continue; continue;
} }
...@@ -662,6 +698,10 @@ int mysql_ha_flush(THD *thd, TABLE_LIST *tables, uint mode_flags) ...@@ -662,6 +698,10 @@ int mysql_ha_flush(THD *thd, TABLE_LIST *tables, uint mode_flags)
} }
} }
/* Release the lock if it was taken by this function. */
if (did_lock)
VOID(pthread_mutex_unlock(&LOCK_open));
DBUG_RETURN(0); DBUG_RETURN(0);
} }
...@@ -693,8 +733,8 @@ static int mysql_ha_flush_table(THD *thd, TABLE **table_ptr, uint mode_flags) ...@@ -693,8 +733,8 @@ static int mysql_ha_flush_table(THD *thd, TABLE **table_ptr, uint mode_flags)
table->table_name, mode_flags)); table->table_name, mode_flags));
if ((hash_tables= (TABLE_LIST*) hash_search(&thd->handler_tables_hash, if ((hash_tables= (TABLE_LIST*) hash_search(&thd->handler_tables_hash,
(byte*) (*table_ptr)->table_name, (byte*) table->table_name,
strlen((*table_ptr)->table_name) + 1))) strlen(table->table_name) + 1)))
{ {
if (! (mode_flags & MYSQL_HA_REOPEN_ON_USAGE)) if (! (mode_flags & MYSQL_HA_REOPEN_ON_USAGE))
{ {
...@@ -708,6 +748,7 @@ static int mysql_ha_flush_table(THD *thd, TABLE **table_ptr, uint mode_flags) ...@@ -708,6 +748,7 @@ static int mysql_ha_flush_table(THD *thd, TABLE **table_ptr, uint mode_flags)
} }
} }
safe_mutex_assert_owner(&LOCK_open);
if (close_thread_table(thd, table_ptr)) if (close_thread_table(thd, table_ptr))
{ {
/* Tell threads waiting for refresh that something has happened */ /* Tell threads waiting for refresh that something has happened */
......
...@@ -154,6 +154,7 @@ LEX *lex_start(THD *thd, uchar *buf,uint length) ...@@ -154,6 +154,7 @@ LEX *lex_start(THD *thd, uchar *buf,uint length)
lex->slave_thd_opt=0; lex->slave_thd_opt=0;
lex->sql_command=SQLCOM_END; lex->sql_command=SQLCOM_END;
bzero((char *)&lex->mi,sizeof(lex->mi)); bzero((char *)&lex->mi,sizeof(lex->mi));
lex->select_lex.is_item_list_lookup= 0;
return lex; return lex;
} }
......
...@@ -121,7 +121,7 @@ typedef struct st_select_lex ...@@ -121,7 +121,7 @@ typedef struct st_select_lex
ignore_index, *ignore_index_ptr; ignore_index, *ignore_index_ptr;
List<Item_func_match> ftfunc_list; List<Item_func_match> ftfunc_list;
uint in_sum_expr, sort_default; uint in_sum_expr, sort_default;
bool create_refs, braces; bool create_refs, braces, is_item_list_lookup;
st_select_lex *next; st_select_lex *next;
} SELECT_LEX; } SELECT_LEX;
......
...@@ -626,6 +626,7 @@ mysql_select(THD *thd,TABLE_LIST *tables,List<Item> &fields,COND *conds, ...@@ -626,6 +626,7 @@ mysql_select(THD *thd,TABLE_LIST *tables,List<Item> &fields,COND *conds,
{ {
order=0; // The output has only one row order=0; // The output has only one row
simple_order=1; simple_order=1;
select_distinct= 0; // No need in distinct for 1 row
} }
calc_group_buffer(&join,group); calc_group_buffer(&join,group);
...@@ -3115,7 +3116,7 @@ eq_ref_table(JOIN *join, ORDER *start_order, JOIN_TAB *tab) ...@@ -3115,7 +3116,7 @@ eq_ref_table(JOIN *join, ORDER *start_order, JOIN_TAB *tab)
tab->cached_eq_ref_table=1; tab->cached_eq_ref_table=1;
if (tab->type == JT_CONST) // We can skip const tables if (tab->type == JT_CONST) // We can skip const tables
return (tab->eq_ref_table=1); /* purecov: inspected */ return (tab->eq_ref_table=1); /* purecov: inspected */
if (tab->type != JT_EQ_REF) if (tab->type != JT_EQ_REF || tab->table->maybe_null)
return (tab->eq_ref_table=0); // We must use this return (tab->eq_ref_table=0); // We must use this
Item **ref_item=tab->ref.items; Item **ref_item=tab->ref.items;
Item **end=ref_item+tab->ref.key_parts; Item **end=ref_item+tab->ref.key_parts;
...@@ -6002,8 +6003,12 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit, ...@@ -6002,8 +6003,12 @@ test_if_skip_sort_order(JOIN_TAB *tab,ORDER *order,ha_rows select_limit,
key_map usable_keys; key_map usable_keys;
DBUG_ENTER("test_if_skip_sort_order"); DBUG_ENTER("test_if_skip_sort_order");
/* Check which keys can be used to resolve ORDER BY */ /*
usable_keys= ~(key_map) 0; Check which keys can be used to resolve ORDER BY.
We must not try to use disabled keys.
*/
usable_keys= table->keys_in_use;
for (ORDER *tmp_order=order; tmp_order ; tmp_order=tmp_order->next) for (ORDER *tmp_order=order; tmp_order ; tmp_order=tmp_order->next)
{ {
if ((*tmp_order->item)->type() != Item::FIELD_ITEM) if ((*tmp_order->item)->type() != Item::FIELD_ITEM)
...@@ -6845,8 +6850,14 @@ find_order_in_list(THD *thd,TABLE_LIST *tables,ORDER *order,List<Item> &fields, ...@@ -6845,8 +6850,14 @@ find_order_in_list(THD *thd,TABLE_LIST *tables,ORDER *order,List<Item> &fields,
return 0; return 0;
} }
order->in_field_list=0; order->in_field_list=0;
/* Allow lookup in select's item_list to find aliased fields */
thd->lex.select_lex.is_item_list_lookup= 1;
if ((*order->item)->fix_fields(thd,tables) || thd->fatal_error) if ((*order->item)->fix_fields(thd,tables) || thd->fatal_error)
{
thd->lex.select_lex.is_item_list_lookup= 0;
return 1; // Wrong field return 1; // Wrong field
}
thd->lex.select_lex.is_item_list_lookup= 0;
all_fields.push_front(*order->item); // Add new field to field list all_fields.push_front(*order->item); // Add new field to field list
order->item=(Item**) all_fields.head_ref(); order->item=(Item**) all_fields.head_ref();
return 0; return 0;
......
...@@ -179,7 +179,7 @@ int mysql_rm_table_part2(THD *thd, TABLE_LIST *tables, bool if_exists, ...@@ -179,7 +179,7 @@ int mysql_rm_table_part2(THD *thd, TABLE_LIST *tables, bool if_exists,
{ {
char *db=table->db; char *db=table->db;
uint flags; uint flags;
mysql_ha_flush(thd, table, MYSQL_HA_CLOSE_FINAL); mysql_ha_flush(thd, table, MYSQL_HA_CLOSE_FINAL, TRUE);
if (!close_temporary_table(thd, db, table->real_name)) if (!close_temporary_table(thd, db, table->real_name))
{ {
tmp_table_deleted=1; tmp_table_deleted=1;
...@@ -1239,7 +1239,7 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables, ...@@ -1239,7 +1239,7 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables,
if (send_fields(thd, field_list, 1)) if (send_fields(thd, field_list, 1))
DBUG_RETURN(-1); DBUG_RETURN(-1);
mysql_ha_flush(thd, tables, MYSQL_HA_CLOSE_FINAL); mysql_ha_flush(thd, tables, MYSQL_HA_CLOSE_FINAL, FALSE);
for (table = tables; table; table = table->next) for (table = tables; table; table = table->next)
{ {
char table_name[NAME_LEN*2+2]; char table_name[NAME_LEN*2+2];
...@@ -1500,7 +1500,7 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, ...@@ -1500,7 +1500,7 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name,
} }
used_fields=create_info->used_fields; used_fields=create_info->used_fields;
mysql_ha_flush(thd, table_list, MYSQL_HA_CLOSE_FINAL); mysql_ha_flush(thd, table_list, MYSQL_HA_CLOSE_FINAL, FALSE);
if (!(table=open_ltable(thd,table_list,TL_WRITE_ALLOW_READ))) if (!(table=open_ltable(thd,table_list,TL_WRITE_ALLOW_READ)))
DBUG_RETURN(-1); DBUG_RETURN(-1);
......
This diff is collapsed.
...@@ -2,6 +2,7 @@ ...@@ -2,6 +2,7 @@
%define release 0 %define release 0
%define license GPL %define license GPL
%define mysqld_user mysql %define mysqld_user mysql
%define mysqld_group mysql
%define server_suffix -standard %define server_suffix -standard
%define mysqldatadir /var/lib/mysql %define mysqldatadir /var/lib/mysql
...@@ -371,18 +372,20 @@ fi ...@@ -371,18 +372,20 @@ fi
# Create a MySQL user and group. Do not report any problems if it already # Create a MySQL user and group. Do not report any problems if it already
# exists. # exists.
groupadd -r %{mysqld_user} 2> /dev/null || true groupadd -r %{mysqld_group} 2> /dev/null || true
useradd -M -r -d $mysql_datadir -s /bin/bash -c "MySQL server" -g %{mysqld_user} %{mysqld_user} 2> /dev/null || true useradd -M -r -d $mysql_datadir -s /bin/bash -c "MySQL server" -g %{mysqld_group} %{mysqld_user} 2> /dev/null || true
# The user may already exist, make sure it has the proper group nevertheless (BUG#12823)
usermod -g %{mysqld_group} %{mysqld_user} 2> /dev/null || true
# Change permissions so that the user that will run the MySQL daemon # Change permissions so that the user that will run the MySQL daemon
# owns all database files. # owns all database files.
chown -R %{mysqld_user}:%{mysqld_user} $mysql_datadir chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir
# Initiate databases # Initiate databases
%{_bindir}/mysql_install_db -IN-RPM --user=%{mysqld_user} %{_bindir}/mysql_install_db -IN-RPM --user=%{mysqld_user}
# Change permissions again to fix any new files. # Change permissions again to fix any new files.
chown -R %{mysqld_user}:%{mysqld_user} $mysql_datadir chown -R %{mysqld_user}:%{mysqld_group} $mysql_datadir
# Fix permissions for the permission database so that only the user # Fix permissions for the permission database so that only the user
# can read them. # can read them.
...@@ -437,41 +440,48 @@ fi ...@@ -437,41 +440,48 @@ fi
%doc %attr(644, root, man) %{_mandir}/man1/isamchk.1* %doc %attr(644, root, man) %{_mandir}/man1/isamchk.1*
%doc %attr(644, root, man) %{_mandir}/man1/isamlog.1* %doc %attr(644, root, man) %{_mandir}/man1/isamlog.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysql_zap.1* %doc %attr(644, root, man) %{_mandir}/man1/myisamchk.1*
%doc %attr(644, root, man) %{_mandir}/man1/myisamlog.1*
%doc %attr(644, root, man) %{_mandir}/man1/myisampack.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysqld.1* %doc %attr(644, root, man) %{_mandir}/man1/mysqld.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysql_fix_privilege_tables.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysqld_multi.1* %doc %attr(644, root, man) %{_mandir}/man1/mysqld_multi.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysqld_safe.1* %doc %attr(644, root, man) %{_mandir}/man1/mysqld_safe.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysql_fix_privilege_tables.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysqlhotcopy.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysql.server.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysql_zap.1*
%doc %attr(644, root, man) %{_mandir}/man1/pack_isam.1*
%doc %attr(644, root, man) %{_mandir}/man1/perror.1* %doc %attr(644, root, man) %{_mandir}/man1/perror.1*
%doc %attr(644, root, man) %{_mandir}/man1/replace.1* %doc %attr(644, root, man) %{_mandir}/man1/replace.1*
%doc %attr(644, root, man) %{_mandir}/man1/safe_mysqld.1*
%ghost %config(noreplace,missingok) %{_sysconfdir}/my.cnf %ghost %config(noreplace,missingok) %{_sysconfdir}/my.cnf
%attr(755, root, root) %{_bindir}/isamchk %attr(755, root, root) %{_bindir}/isamchk
%attr(755, root, root) %{_bindir}/isamlog %attr(755, root, root) %{_bindir}/isamlog
%attr(755, root, root) %{_bindir}/my_print_defaults
%attr(755, root, root) %{_bindir}/myisamchk %attr(755, root, root) %{_bindir}/myisamchk
%attr(755, root, root) %{_bindir}/myisam_ftdump %attr(755, root, root) %{_bindir}/myisam_ftdump
%attr(755, root, root) %{_bindir}/myisamlog %attr(755, root, root) %{_bindir}/myisamlog
%attr(755, root, root) %{_bindir}/myisampack %attr(755, root, root) %{_bindir}/myisampack
%attr(755, root, root) %{_bindir}/my_print_defaults
%attr(755, root, root) %{_bindir}/mysqlbug
%attr(755, root, root) %{_bindir}/mysql_convert_table_format %attr(755, root, root) %{_bindir}/mysql_convert_table_format
%attr(755, root, root) %{_bindir}/mysqld_multi
%attr(755, root, root) %{_bindir}/mysqld_safe
%attr(755, root, root) %{_bindir}/mysql_explain_log %attr(755, root, root) %{_bindir}/mysql_explain_log
%attr(755, root, root) %{_bindir}/mysql_fix_extensions %attr(755, root, root) %{_bindir}/mysql_fix_extensions
%attr(755, root, root) %{_bindir}/mysql_fix_privilege_tables %attr(755, root, root) %{_bindir}/mysql_fix_privilege_tables
%attr(755, root, root) %{_bindir}/mysqlhotcopy
%attr(755, root, root) %{_bindir}/mysql_install_db %attr(755, root, root) %{_bindir}/mysql_install_db
%attr(755, root, root) %{_bindir}/mysql_secure_installation %attr(755, root, root) %{_bindir}/mysql_secure_installation
%attr(755, root, root) %{_bindir}/mysql_setpermission %attr(755, root, root) %{_bindir}/mysql_setpermission
%attr(755, root, root) %{_bindir}/mysql_zap
%attr(755, root, root) %{_bindir}/mysqlbug
%attr(755, root, root) %{_bindir}/mysqld_multi
%attr(755, root, root) %{_bindir}/mysqld_safe
%attr(755, root, root) %{_bindir}/mysqlhotcopy
%attr(755, root, root) %{_bindir}/mysqltest %attr(755, root, root) %{_bindir}/mysqltest
%attr(755, root, root) %{_bindir}/mysql_zap
%attr(755, root, root) %{_bindir}/pack_isam %attr(755, root, root) %{_bindir}/pack_isam
%attr(755, root, root) %{_bindir}/perror %attr(755, root, root) %{_bindir}/perror
%attr(755, root, root) %{_bindir}/replace %attr(755, root, root) %{_bindir}/replace
%attr(755, root, root) %{_bindir}/resolve_stack_dump
%attr(755, root, root) %{_bindir}/resolveip %attr(755, root, root) %{_bindir}/resolveip
%attr(755, root, root) %{_bindir}/resolve_stack_dump
%attr(755, root, root) %{_bindir}/safe_mysqld %attr(755, root, root) %{_bindir}/safe_mysqld
%attr(755, root, root) %{_sbindir}/mysqld %attr(755, root, root) %{_sbindir}/mysqld
...@@ -499,10 +509,14 @@ fi ...@@ -499,10 +509,14 @@ fi
%attr(755, root, root) %{_bindir}/mysqlimport %attr(755, root, root) %{_bindir}/mysqlimport
%attr(755, root, root) %{_bindir}/mysqlshow %attr(755, root, root) %{_bindir}/mysqlshow
%doc %attr(644, root, man) %{_mandir}/man1/msql2mysql.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysql.1* %doc %attr(644, root, man) %{_mandir}/man1/mysql.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysqlaccess.1* %doc %attr(644, root, man) %{_mandir}/man1/mysqlaccess.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysqladmin.1* %doc %attr(644, root, man) %{_mandir}/man1/mysqladmin.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysqlbinlog.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysqlcheck.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysqldump.1* %doc %attr(644, root, man) %{_mandir}/man1/mysqldump.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysqlimport.1*
%doc %attr(644, root, man) %{_mandir}/man1/mysqlshow.1* %doc %attr(644, root, man) %{_mandir}/man1/mysqlshow.1*
%post shared %post shared
...@@ -514,6 +528,7 @@ fi ...@@ -514,6 +528,7 @@ fi
%files devel %files devel
%defattr(-, root, root, 0755) %defattr(-, root, root, 0755)
%doc EXCEPTIONS-CLIENT %doc EXCEPTIONS-CLIENT
%doc %attr(644, root, man) %{_mandir}/man1/mysql_config.1*
%attr(755, root, root) %{_bindir}/comp_err %attr(755, root, root) %{_bindir}/comp_err
%attr(755, root, root) %{_bindir}/mysql_config %attr(755, root, root) %{_bindir}/mysql_config
%dir %attr(755, root, root) %{_includedir}/mysql %dir %attr(755, root, root) %{_includedir}/mysql
...@@ -562,6 +577,14 @@ fi ...@@ -562,6 +577,14 @@ fi
# itself - note that they must be ordered by date (important when # itself - note that they must be ordered by date (important when
# merging BK trees) # merging BK trees)
%changelog %changelog
* Thu Oct 27 2005 Lenz Grimmer <lenz@grimmer.com>
- added more man pages
* Thu Oct 13 2005 Lenz Grimmer <lenz@mysql.com>
- added a usermod call to assign a potential existing mysql user to the
correct user group (BUG#12823)
* Thu Sep 29 2005 Lenz Grimmer <lenz@mysql.com> * Thu Sep 29 2005 Lenz Grimmer <lenz@mysql.com>
- fixed the removing of the RPM_BUILD_ROOT in the %clean section (the - fixed the removing of the RPM_BUILD_ROOT in the %clean section (the
......
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