summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorunknown <monty@donna.mysql.com>2000-12-24 15:22:33 +0200
committerunknown <monty@donna.mysql.com>2000-12-24 15:22:33 +0200
commit967c1b04c0cfedbb618083ac0874602fd67ed954 (patch)
treedecaf5525533d4b56d277f4507959de40b717e13
parent25e911fa5e6ae6389231bffd6e64f9bd292aa3bc (diff)
parent78cf07c8ea126fc03706988de23893ca4680ac77 (diff)
downloadmariadb-git-967c1b04c0cfedbb618083ac0874602fd67ed954.tar.gz
merge
configure.in: Auto merged sql/mysql_priv.h: Auto merged sql/mysqld.cc: Auto merged sql/sql_insert.cc: Auto merged sql/sql_parse.cc: Auto merged
-rw-r--r--Docs/manual.texi161
-rw-r--r--client/mysql.cc6
-rw-r--r--configure.in3
-rw-r--r--heap/hp_rkey.c2
-rw-r--r--include/my_base.h4
-rwxr-xr-xman/isamchk.1140
-rw-r--r--man/isamlog.1103
-rw-r--r--man/mysql.17
-rw-r--r--man/mysql_zap.134
-rwxr-xr-xman/mysqlaccess.1121
-rwxr-xr-xman/mysqladmin.1208
-rwxr-xr-xman/mysqld.1230
-rw-r--r--man/mysqld_multi.190
-rwxr-xr-xman/mysqldump.1273
-rwxr-xr-xman/mysqlshow.193
-rwxr-xr-xman/perror.158
-rw-r--r--man/replace.168
-rwxr-xr-xman/safe_mysqld.186
-rw-r--r--man/which.254
-rw-r--r--mysys/my_write.c3
-rw-r--r--scripts/mysqlaccess.sh6
-rw-r--r--scripts/safe_mysqld.sh2
-rw-r--r--sql-bench/Results/ATIS-mysql-Linux_2.2.14_my_SMP_i68617
-rw-r--r--sql-bench/Results/RUN-mysql-Linux_2.2.14_my_SMP_i686153
-rw-r--r--sql-bench/Results/alter-table-mysql-Linux_2.2.14_my_SMP_i68610
-rw-r--r--sql-bench/Results/big-tables-mysql-Linux_2.2.14_my_SMP_i68612
-rw-r--r--sql-bench/Results/connect-mysql-Linux_2.2.14_my_SMP_i68620
-rw-r--r--sql-bench/Results/create-mysql-Linux_2.2.14_my_SMP_i68614
-rw-r--r--sql-bench/Results/insert-mysql-Linux_2.2.14_my_SMP_i68686
-rw-r--r--sql-bench/Results/select-mysql-Linux_2.2.14_my_SMP_i68626
-rw-r--r--sql-bench/Results/wisconsin-mysql-Linux_2.2.14_my_SMP_i6868
-rw-r--r--sql-bench/bench-init.pl.sh2
-rw-r--r--sql-bench/server-cfg.sh7
-rw-r--r--sql-bench/test-ATIS.sh6
-rw-r--r--sql-bench/test-insert.sh44
-rw-r--r--sql/ha_berkeley.cc7
-rw-r--r--sql/ha_berkeley.h6
-rw-r--r--sql/mysql_priv.h3
-rw-r--r--sql/mysqld.cc22
-rw-r--r--sql/sql_insert.cc26
-rw-r--r--sql/sql_load.cc5
-rw-r--r--sql/sql_parse.cc5
-rw-r--r--sql/sql_show.cc13
-rw-r--r--sql/sql_table.cc4
-rw-r--r--sql/sql_update.cc3
-rw-r--r--support-files/binary-configure.sh8
46 files changed, 2005 insertions, 254 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi
index 83e03ccc8cf..6a3a762efb5 100644
--- a/Docs/manual.texi
+++ b/Docs/manual.texi
@@ -222,7 +222,7 @@ Installing MySQL
* OS/2:: OS/2 notes
* MySQL binaries:: MySQL binaries
* Post-installation:: Post-installation setup and testing
-* Upgrade:: Is there anything special to do when upgrading/downgrading @strong{MySQL}?
+* Upgrade:: Upgrading/downgrading @strong{MySQL}
Installing a MySQL Binary Distribution
@@ -307,7 +307,7 @@ Post-installation Setup and Testing
* Command-line options:: Command-line options
* Option files:: Option files
-Is There Anything Special to Do when Upgrading/Downgrading MySQL?
+Upgrading/Downgrading MySQL
* Upgrading-from-3.22:: Upgrading from a 3.22 version to 3.23
* Upgrading-from-3.21:: Upgrading from a 3.21 version to 3.22
@@ -3883,7 +3883,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
-* Upgrade:: Is there anything special to do when upgrading/downgrading @strong{MySQL}?
+* Upgrade:: Upgrading/Downgrading MySQL
@end menu
This chapter describes how to obtain and install @strong{MySQL}:
@@ -5937,13 +5937,20 @@ Once @strong{BitKeeper} is installed,
@code{bk clone bk://work.mysql.com:7000 mysql} - the initial download
may take a while, depending on the speed of your connection.
@item
-@code{cd mysql; bk -r edit; aclocal; autoheader; autoconf;
- automake; ./configure} with your favorite options, and then
-@code{ make}.
-You will need GNU autoconf/automake, libtool, and m4 to do this.
-We have a
-collection of our standard configure scripts in the @code{BUILD/}
-subdirectory - if you are lazy, you can do
+You will need GNU autoconf/automake, libtool, and m4 to do the next stage.
+If you get some strange error during the first stage, check that you really
+have libtool installed!
+
+@example
+cd mysql
+bk -r edit
+aclocal; autoheader; autoconf; automake;
+./configure # Add your favorite options here
+make
+@end example
+
+We have a collection of our standard configure scripts in the
+@code{BUILD/} subdirectory - if you are lazy, you can do
@code{BUILD/compile-pentium-debug} . It will actually work on a lot of
non-x86 machines despite its name.
@item
@@ -8740,6 +8747,8 @@ shell> ./bin/mysql_install_db
shell> ./bin/safe_mysqld --user=mysql &
@end example
+This installs and starts @code{MySQL} without any passwords.
+
Testing is most easily done from the top-level directory of the @strong{MySQL}
distribution. For a binary distribution, this is your installation directory
(typically something like @file{/usr/local/mysql}). For a source
@@ -9180,12 +9189,19 @@ If you find something like the following in the log file:
000729 14:50:10 Can't init databases
@end example
-this means that you started mysqld with @code{--bdb-recover} and that
-Berkeley DB found something wrong with it's log files when it tried to
-recover your databases. To be able to continue, you should move away
-the old Berkeley DB log file from the database directory to some other
-place, where you can later examine these. The log files are named
-@file{log.0000000001}, where the number will increase over time.
+this means that you didn't started mysqld with @code{--bdb-no-recover}
+and Berkeley DB found something wrong with it's log files when it
+tried to recover your databases. To be able to continue, you should
+move away the old Berkeley DB log file from the database directory to
+some other place, where you can later examine these. The log files are
+named @file{log.0000000001}, where the number will increase over time.
+
+If you are running @code{mysqld} with BDB table support and mysqld core
+dumps at start this could be because of some problems with the BDB
+recover log. In this case you can try starting @code{mysqld} with
+@code{--bdb-no-recover}. If this helps, then you should remove all
+@file{log.*} files from the data directory and try starting @code{mysqld}
+again.
If you get the following error, it means that some other program (or another
@code{mysqld} server) is already using the TCP/IP port or socket
@@ -9700,7 +9716,7 @@ shell> my_print_defaults client mysql
The above output contains all options for the groups 'client' and 'mysql'.
@node Upgrade, , Post-installation, Installing
-@section Is There Anything Special to Do when Upgrading/Downgrading MySQL?
+@section Upgrading/Downgrading MySQL
@cindex upgrading
@cindex downgrading
@@ -19081,6 +19097,11 @@ specify values for all columns that require a non-@code{NULL} value.
@xref{configure options, , @code{configure} options}.
@item
+You can find the value used for an @code{AUTO_INCREMENT} column
+with the @code{mysql_insert_id} function.
+@xref{mysql_insert_id, , @code{mysql_insert_id()}}.
+
+@item
The following conditions hold for an @code{INSERT INTO ... SELECT} statement:
@itemize @minus
@@ -20267,6 +20288,7 @@ differ somewhat:
| myisam_sort_buffer_size | 8388608 |
| net_buffer_length | 16384 |
| net_retry_count | 10 |
+| open_files_limit | 0 |
| pid_file | /usr/local/mysql/data/tik.pid |
| port | 3306 |
| protocol_version | 10 |
@@ -20558,6 +20580,14 @@ internal interrupts are sent to all threads.
Number of seconds to wait for a block to be written to a connection before
aborting the write.
+@item @code{open_files_limit}
+If this is not 0, then @code{mysqld} will use this value to reserve file
+descriptors to use with @code{getrlimit()}. If this value is 0 then
+@code{mysqld} will reserve @code{max_connections*5} or
+@code{max_connections + table_cache*2} (whichever is larger) number of
+files. You should try increasing this if @code{mysqld} gives you the
+error 'Too many open files'.
+
@item @code{pid_file}
The value of the @code{--pid-file} option.
@@ -22650,7 +22680,7 @@ BDB tables:
@item @code{--bdb-lock-detect=#} @tab Berkeley lock detect. One of (DEFAULT, OLDEST, RANDOM, or YOUNGEST).
@item @code{--bdb-logdir=directory} @tab Berkeley DB log file directory.
@item @code{--bdb-no-sync} @tab Don't synchronously flush logs.
-@item @code{--bdb-recover} @tab Start Berkeley DB in recover mode.
+@item @code{--bdb-no-recover} @tab Don't start Berkeley DB in recover mode.
@item @code{--bdb-shared-data} @tab Start Berkeley DB in multi-process mode (Don't use @code{DB_PRIVATE} when initializing Berkeley DB)
@item @code{--bdb-tmpdir=directory} @tab Berkeley DB tempfile name.
@item @code{--skip-bdb} @tab Don't use berkeley db.
@@ -22661,12 +22691,13 @@ If you use @code{--skip-bdb}, @strong{MySQL} will not initialize the
Berkeley DB library and this will save a lot of memory. Of course,
you cannot use @code{BDB} tables if you are using this option.
-Normally you should start mysqld with @code{--bdb-recover} if you intend
-to use BDB tables. This may, however, give you problems when you try to
-start mysqld if the BDB log files are corrupted. @xref{Starting server}.
+Normally you should start mysqld without @code{--bdb-no-recover} if you
+intend to use BDB tables. This may, however, give you problems when you
+try to start mysqld if the BDB log files are corrupted. @xref{Starting
+server}.
With @code{bdb_max_lock} you can specify the maximum number of locks
-(1000 by default) you can have active on a BDB table. You should
+(10000 by default) you can have active on a BDB table. You should
increase this if you get errors of type @code{bdb: Lock table is out of
available locks} or @code{Got error 12 from ...} when you have do long
transactions or when @code{mysqld} has to examine a lot of rows to
@@ -22681,6 +22712,22 @@ You may also want to change @code{binlog_cache_size} and
@itemize @bullet
@item
+To be able to rollback transactions BDB maintain log files. For maximum
+performance you should place these on another disk than your databases
+by using the @code{--bdb_log_dir} options.
+@item
+@strong{MySQL} performs a checkpoint each time a new BDB log
+file is started, and removes any log files that are not needed for
+current transactions. One can also run @code{FLUSH LOGS} at any time
+to checkpoint the Berkeley DB tables.
+
+For disaster recovery, one should use table backups plus
+@strong{MySQL}'s binary log. @xref{Backup}.
+
+@strong{Warning}: If you delete old log files that are in use, BDB will
+not be able to do recovery at all and you may loose data if something
+goes wrong.
+@item
@strong{MySQL} requires a @code{PRIMARY KEY} in each BDB table to be
able to refer to previously read rows. If you don't create one,
@strong{MySQL} will create an maintain a hidden @code{PRIMARY KEY} for
@@ -22723,14 +22770,6 @@ There is often holes in the BDB table to allow you to insert new rows in
the middle of the key tree. This makes BDB tables somewhat larger than
MyISAM tables.
@item
-@strong{MySQL} performs a checkpoint each time a new Berkeley DB log
-file is started, and removes any log files that are not needed for
-current transactions. One can also run @code{FLUSH LOGS} at any time
-to checkpoint the Berkeley DB tables.
-
-For disaster recovery, one should use table backups plus MySQL's binary
-log. @xref{Backup}.
-@item
The optimizer needs to know an approximation of the number of rows in
the table. @strong{MySQL} solves this by counting inserts and
maintaining this in a separate segment in each BDB table. If you don't
@@ -26327,7 +26366,7 @@ for most queries, but some queries may take substantially longer (The
If you use @code{--with-debug}, then you will only loose 15 %.
@item
-On a Sun SPARCstation 10, @code{gcc} 2.7.3 is 13% faster than Sun Pro C++ 4.2.
+On a Sun SPARCstation 20, SunPro C++ 4.2 is 5 % faster than @code{gcc} 2.95.2.
@item
Compiling with @code{gcc} 2.95.2 for ultrasparc with the option
@@ -26340,6 +26379,10 @@ get bigger.
@item
Running with @code{--log-bin} makes @strong{[MySQL} 1 % slower.
+
+@item
+Compiling without frame pointers @code{-fomit-frame-pointer} with gcc makes
+MySQL 1 % faster.
@end itemize
The @strong{MySQL}-Linux distribution provided by MySQL AB used to be
@@ -31950,6 +31993,11 @@ Visual Basic with ADO can't handle big integers. This means that some queries
like @code{SHOW PROCESSLIST} will not work properly. The fix is to set
add the option @code{OPTION=16834} in the ODBC connect string or set
the @code{Change BIGINT columns to INT} option in the MyODBC connect screen.
+@item VisualInterDev
+If you get the error @code{[Microsoft][ODBC Driver Manager] Driver does
+not support this parameter} the reason may be that you have a
+@code{BIGINT} in your result. Try setting the @code{Change BIGINT
+columns to INT} option in the MyODBC connect screen.
@end table
@cindex AUTO-INCREMENT, ODBC
@@ -33173,23 +33221,29 @@ files simultaneously. You can either tell @code{mysqld} not to open so
many files at once or increase the number of file descriptors
available to @code{mysqld}.
-To tell @code{mysqld} to keep open fewer files at a time, you can make the
-table cache smaller by using the @code{-O table_cache=32} option
-to @code{safe_mysqld} (the default value is 64). Reducing the value of
-@code{max_connections} will also reduce the number of open files (the default
-value is 90).
+To tell @code{mysqld} to keep open fewer files at a time, you can make
+the table cache smaller by using the @code{-O table_cache=32} option to
+@code{safe_mysqld} (the default value is 64). Reducing the value of
+@code{max_connections} will also reduce the number of open files (the
+default value is 90).
@tindex ulimit
-To change the number of file descriptors available to @code{mysqld}, modify
-the @code{safe_mysqld} script. There is a commented-out line
-@code{ulimit -n 256} in the script. You can remove the @code{'#'} character
-to uncomment this line, and change the number 256 to change the number of
-file descriptors available to @code{mysqld}.
+To change the number of file descriptors available to @code{mysqld}, you
+can use the option @code{--open-files-limit=#} to @code{safe_mysqld} or
+@code{-O open-files-limit=#} to @code{mysqld}. @xref{SHOW VARIABLES}.
+The easyest way to do that is to add the option to your option file.
+@xref{Option files}. If you have an old @code{mysqld} version that
+doesn't support this, you can edit the @code{safe_mysqld} script. There
+is a commented-out line @code{ulimit -n 256} in the script. You can
+remove the @code{'#'} character to uncomment this line, and change the
+number 256 to affect the number of file descriptors available to
+@code{mysqld}.
-@code{ulimit} can increase the number of file descriptors, but only up to the
-limit imposed by the operating system. If you need to increase the OS limit
-on the number of file descriptors available to each process, consult the
-documentation for your operating system.
+@code{ulimit} (and @code{open-files-limit}) can increase the number of
+file descriptors, but only up to the limit imposed by the operating
+system. If you need to increase the OS limit on the number of file
+descriptors available to each process, consult the documentation for
+your operating system.
Note that if you run the @code{tcsh} shell, @code{ulimit} will not work!
@code{tcsh} will also report incorrect values when you ask for the current
@@ -39894,6 +39948,21 @@ though, so Version 3.23 is not released as a stable version yet.
@appendixsubsec Changes in release 3.23.30
@itemize @bullet
@item
+Added option @code{open-files-limit} to @code{mysqld}.
+@item
+Changed option @code{open-files} to @code{open-files-limit} in
+@code{safe_mysqld}.
+@item
+Item fixed a bug where some rows where not found with @code{HEAP} tables
+that had many keys.
+@item
+Fixed that @code{--bdb-no-sync} works.
+@item
+Changed @code{--bdb-recover} to @code{--bdb-no-recover} as recover should
+be on by default.
+@item
+Changed the default number of BDB locks to 10000.
+@item
Fixed a bug from 3.23.29 when allocating the shared structure needed
for BDB tables.
@item
@@ -40558,6 +40627,8 @@ a feature.
@itemize @bullet
@item
Fixed bug in 3.23.19; @code{DELETE FROM tbl_name} removed the .frm file.
+@item
+Added @code{SHOW CREATE TABLE}.
@end itemize
@node News-3.23.19, News-3.23.18, News-3.23.20, News-3.23.x
diff --git a/client/mysql.cc b/client/mysql.cc
index 4845b6505b9..30e7d75ecaa 100644
--- a/client/mysql.cc
+++ b/client/mysql.cc
@@ -505,10 +505,12 @@ static void usage(int version)
log.\n");
#ifndef __WIN__
printf("\
- --pager[=...] Output type. Default is your ENV variable PAGER.\n\
+ --pager[=...] Pager to use to display results. If you don't supply\n\
+ an option the default pager is taken from your ENV\n\
+ variable PAGER (%s).\n\
Valid pagers are less, more, cat [> filename], etc.\n\
See interactive help (\\h) also. This option does\n\
- not work in batch mode.\n");
+ not work in batch mode.\n", getenv("PAGER") ? getenv("PAGER") : "");
#endif
printf("\
-p[password], --password[=...]\n\
diff --git a/configure.in b/configure.in
index fbfb3119674..db2c93891eb 100644
--- a/configure.in
+++ b/configure.in
@@ -489,7 +489,8 @@ AC_CHECK_HEADERS(fcntl.h float.h floatingpoint.h ieeefp.h limits.h \
stdlib.h stddef.h \
strings.h string.h synch.h sys/mman.h sys/socket.h netinet/in.h arpa/inet.h \
sys/timeb.h sys/types.h sys/un.h sys/vadvise.h sys/wait.h term.h \
- unistd.h utime.h sys/utime.h termio.h termios.h sched.h crypt.h alloca.h)
+ unistd.h utime.h sys/utime.h termio.h termios.h sched.h crypt.h alloca.h \
+ sys/ioctl.h)
#--------------------------------------------------------------------
# Check for system libraries. Adds the library to $LIBS
diff --git a/heap/hp_rkey.c b/heap/hp_rkey.c
index 872560b1a91..157267f7149 100644
--- a/heap/hp_rkey.c
+++ b/heap/hp_rkey.c
@@ -37,7 +37,7 @@ int heap_rkey(HP_INFO *info, byte *record, int inx, const byte *key)
}
memcpy(record,pos,(size_t) share->reclength);
info->update=HA_STATE_AKTIV;
- if (!(share->keydef->flag & HA_NOSAME))
+ if (!(share->keydef[inx].flag & HA_NOSAME))
memcpy(info->lastkey,key,(size_t) share->keydef[inx].length);
DBUG_RETURN(0);
}
diff --git a/include/my_base.h b/include/my_base.h
index 5ab84fb3433..1fbdd0539a8 100644
--- a/include/my_base.h
+++ b/include/my_base.h
@@ -88,7 +88,9 @@ enum ha_extra_function {
HA_EXTRA_FORCE_REOPEN=21, /* Datafile have changed on disk */
HA_EXTRA_FLUSH, /* Flush tables to disk */
HA_EXTRA_NO_ROWS, /* Don't write rows */
- HA_EXTRA_RESET_STATE /* Reset positions */
+ HA_EXTRA_RESET_STATE, /* Reset positions */
+ HA_EXTRA_IGNORE_DUP_KEY, /* Dup keys don't rollback everything*/
+ HA_EXTRA_NO_IGNORE_DUP_KEY
};
/* The following is parameter to ha_panic() */
diff --git a/man/isamchk.1 b/man/isamchk.1
new file mode 100755
index 00000000000..f225dc35d18
--- /dev/null
+++ b/man/isamchk.1
@@ -0,0 +1,140 @@
+.TH ISAMCHK 1 "19 December 2000"
+.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"
+isamchk (1),
+isamlog (1),
+mysqlaccess (1),
+mysqladmin (1),
+mysqlbug (1),
+mysqld (1),
+mysqldump (1),
+mysqlshow (1),
+msql2mysql (1),
+perror (1),
+replace (1),
+safe_mysqld (1),
+which1 (1),
+zap (1),
+.SH AUTHOR
+Ver 1.0, distribution 3.23.29a
+Michael (Monty) Widenius (monty@tcx.se),
+TCX Datakonsult AB (http://www.tcx.se).
+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
diff --git a/man/isamlog.1 b/man/isamlog.1
new file mode 100644
index 00000000000..efc042ccd7c
--- /dev/null
+++ b/man/isamlog.1
@@ -0,0 +1,103 @@
+.TH ISAMLOG 1 "20 December 2000"
+.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),
+isamlog (1),
+mysqlaccess (1),
+mysqladmin (1),
+mysqlbug (1),
+mysqld (1),
+mysqldump (1),
+mysqlshow (1),
+msql2mysql (1),
+perror (1),
+replace (1),
+safe_mysqld (1),
+which1 (1),
+zap (1),
+
+.SH AUTHOR
+
+Ver 1.0, distribution 3.23.29a
+Michael (Monty) Widenius (monty@tcx.se),
+TCX Datakonsult AB (http://www.tcx.se).
+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
+
+
diff --git a/man/mysql.1 b/man/mysql.1
index e0b77363a82..96ccca8f50e 100644
--- a/man/mysql.1
+++ b/man/mysql.1
@@ -116,6 +116,13 @@ executable shell script for starting mysqld safely
.TP
.I /site/var/mysql/data
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),
diff --git a/man/mysql_zap.1 b/man/mysql_zap.1
new file mode 100644
index 00000000000..98da195894e
--- /dev/null
+++ b/man/mysql_zap.1
@@ -0,0 +1,34 @@
+.TH ZAP 1 "20 December 2000"
+.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), mysqlaccess (1), mysqladmin (1), mysqlbug (1), mysqld (1), mysqldump (1), mysqlshow (1), msql2mysql (1), perror (1), replace (1), safe_mysqld (1), which1 (1), zap (1),
+.SH AUTHOR
+Ver 1.0, distribution 3.23.29a Michael (Monty) Widenius (monty@tcx.se), TCX Datakonsult AB (http://www.tcx.se). 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 \ No newline at end of file
diff --git a/man/mysqlaccess.1 b/man/mysqlaccess.1
new file mode 100755
index 00000000000..888cfe8f646
--- /dev/null
+++ b/man/mysqlaccess.1
@@ -0,0 +1,121 @@
+.TH MYSQLACCESS 1 "19 December 2000"
+.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
+ + Wilcards (*,?,%,_) are allowed for host, user and db, but be sure
+ to escape them from your shell!! (ie type \* or '*')
+.SH "SEE ALSO"
+isamchk (1),
+isamlog (1),
+mysqlaccess (1),
+mysqladmin (1),
+mysqlbug (1),
+mysqld (1),
+mysqldump (1),
+mysqlshow (1),
+msql2mysql (1),
+perror (1),
+replace (1),
+safe_mysqld (1),
+which1 (1),
+zap (1),
+.SH AUTHOR
+Ver 1.0, distribution 3.23.29a
+Michael (Monty) Widenius (monty@tcx.se),
+TCX Datakonsult AB (http://www.tcx.se).
+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
diff --git a/man/mysqladmin.1 b/man/mysqladmin.1
new file mode 100755
index 00000000000..58bd2070de6
--- /dev/null
+++ b/man/mysqladmin.1
@@ -0,0 +1,208 @@
+.TH MYSQLADMIN 1 "18 December 2000"
+.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),
+mysqlaccess (1),
+mysqladmin (1),
+mysqlbug (1),
+mysqld (1),
+mysqldump (1),
+mysqlshow (1),
+msql2mysql (1),
+perror (1),
+replace (1),
+safe_mysqld (1),
+which1 (1),
+zap (1),
+.SH AUTHOR
+Ver 1.0, distribution 3.23.29a
+Michael (Monty) Widenius (monty@tcx.se),
+TCX Datakonsult AB (http://www.tcx.se).
+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
+
+
+
+
+
diff --git a/man/mysqld.1 b/man/mysqld.1
new file mode 100755
index 00000000000..d3f22c0be1b
--- /dev/null
+++ b/man/mysqld.1
@@ -0,0 +1,230 @@
+.TH MYSQLD 1 "19 December 2000"
+.SH NAME
+.BR mysqld
+ \- Starts the MySQL server demon
+.SH USAGE
+mysqld [OPTIONS]
+.SH SYNOPSIS
+.B mysqld
+.RB [ \-\-ansi ]
+.RB [ \-b | \-\-basedir=\fP\fIpath\fP ]
+.RB [ \-\-big-tables ]
+.RB [ \-\-bind\-address=IP ]
+.RB [ \-\-character\-sets\-dir=\fP\fIpath\fP ]
+.RB [ \-\-chroot=\fP\fIpath\fP ]
+.RB [ \-h | \-\-datadir=\fP\fIpath\fP ]
+.RB [ \-\-default\-character\-set=\fP\fIcharset\fP ]
+.RB [ \-\-default\-table\-type=\fP\fItype \fP]
+.RB [ \-\-delay\-key\-write\-for\-all\-tables ]
+.RB [ \-\-enable\-locking ]
+.RB [ \-T | \-\-exit\-info]
+.RB [ \-\-flush ]
+.RB [ \-? | \-\-help ]
+.RB [ \-\-init\-file=file ]
+.RB [ \-L | \-\-language=... ]
+.RB [ \-l | \-\-log[=file] ]
+.RB [ \-\-log\-isam[=file] ]
+.RB [ \-\-log\-slow\-queries\fP\fI[=file]\fP ]
+.RB [ \-\-log\-update\fP\fI[=file]\fP ]
+.RB [ \-\-log\-long\-format ]
+.RB [ \-\-low\-priority\-updates ]
+.RB [ \-\-memlock ]
+.RB [ " \-\-myisam\-recover [=option[,option...]]] where option is one of DEFAULT, BACKUP, FORCE or QUICK." ]
+.RB [ \-\-pid\-file=\fP\fIpath\fP ]
+.RB [ \-P | \-\-port=... ]
+.RB [ \-o | \-\-old\-protocol ]
+.RB [ \-\-one\-thread ]
+.RB [ \-O | \-\-set\-variable var=\fP\fIoption\fP ]
+.RB [ \-Sg | \-\-skip\-grant\-tables ]
+.RB [ \-\-safe\-mode ]
+.RB [ \-\-secure ]
+.RB [ \-\-skip\-concurrent\-insert ]
+.RB [ \-\-skip\-delay\-key\-write ]
+.RB [ \-\-skip\-locking ]
+.RB [ \-\-skip\-name\-resolve ]
+.RB [ \-\-skip\-networking ]
+.RB [ \-\-skip\-new ]
+.RB [ \-\-skip\-host\-cache ]
+.RB [ \-\-skip\-show\-database ]
+.RB [ \-\-skip\-thread\-priority ]
+.RB [ \-\-socket=path ]
+.RB [ \-t | \-\-tmpdir=\fP\fIpath \fP]
+.RB [ \-u | \-\-user=\fP\fIuser_name\fP ]
+.RB [ \-V | \-\-version ]
+.SH DESCRIPTION
+.TP
+.BR --ansi
+Use ANSI SQL syntax instead of MySQL syntax. See section 5.2 Running MySQL in ANSI Mode.
+.TP
+.BR -b | --basedir=\fP\fIpath \fP
+Path to installation directory. All paths are usually resolved relative to this.
+.TP
+.BR --big-tables
+Allow big result sets by saving all temporary sets on file. It solves most 'table full' errors, but also slows down the queries where in\-memory tables would suffice. Since Version 3.23.2, MySQL is able to solve it automaticaly by using memory for small temporary tables and switching to disk tables where necessary.
+.TP
+.BR \-\-bind\-address=\fP\fIIP \fP
+IP address to bind to.
+.TP
+.BR \-\-character\-sets\-dir=\fP\fIpath \fP
+Directory where character sets are. See section 10.1.1 The Character Set Used for Data and Sorting.
+.TP
+.BR \-\-chroot=\fP\fIpath \fP
+Chroot mysqld daemon during startup. Recommended security measure. It will somewhat limit LOAD DATA INFILE and SELECT ... INTO OUTFILE though.
+.TP
+.BR \-h | \-\-datadir=\fP\fIpath \fP
+Path to the database root.
+.TP
+.BR \-\-default\-character\-set=\fP\fIcharset \fP
+Set the default character set. See section 10.1.1 The Character Set Used for Data and Sorting.
+.TP
+.BR \-\-default\-table\-type=\fP\fItype \fP
+Set the default table type for tables. See section 8 MySQL Table Types.
+.TP
+.BR \-\-delay\-key\-write\-for\-all\-tables
+Don't flush key buffers between writes for any MyISAM table. See Mysql Manual section 12.2.3 Tuning Server Parameters.
+.TP
+.BR \-\-enable\-locking
+Enable system locking.
+.TP
+.BR \-T | \-\-exit\-info
+Print some debug info at exit.
+.TP
+.BR \-\-flush
+Flush all changes to disk after each SQL command. Normally MySQL only does a write of all changes to disk after each SQL command and lets the operating system handle the syncing to disk. See section 20.2 What to Do if MySQL Keeps Crashing.
+.TP
+.BR \-? | \-\-help
+Display short help and exit.
+.TP
+.BR \-\-init\-file=\fP\fIfile \fP
+Read SQL commands from this file at startup.
+.TP
+.BR \-L | \-\-language=...
+Client error messages in given language. May be given as a full path. See Mysql Manual section 10.1 What Languages Are Supported by MySQL?.
+.TP
+.BR \-l | \-\-log\fP\fI[=file] \fP
+Log connections and queries to file.
+.TP
+.BR \-\-log\-isam\fP\fI[=file] \fP
+Log all ISAM/MyISAM changes to file (only used when debugging ISAM/MyISAM).
+.TP
+.BR \-\-log\-slow\-queries\fP\fI[=file] \fP
+Log all queries that have taken more than long_query_time seconds to execute to file. See Mysql Manual section 21.5 The Slow Query Log.
+.TP
+.BR \-\-log\-update\fP\fI[=file] \fP
+Log updates to file.# where # is a unique number if not given. See Mysql Manual section 21.3 The Update Log.
+.TP
+.BR \-\-log\-long\-format
+Log some extra information to update log. If you are using
+.BR \-\-log\-slow\-queries
+then queries that are not using indexes are logged to the slow query log.
+.TP
+.BR \-\-low\-priority\-updates
+Table\-modifying operations (INSERT/DELETE/UPDATE) will have lower priority than selects. It can also be done via {INSERT | REPLACE | UPDATE | DELETE} LOW_PRIORITY ... to lower the priority of only one query, or by SET OPTION SQL_LOW_PRIORITY_UPDATES=1 to change the priority in one thread. See Mysql Manual section 12.2.9 Table Locking Issues.
+.TP
+.BR \-\-memlock
+Lock the mysqld process in memory. This works only if your system supports the mlockall() system call. This may help if you have a problem where the operating system is causing mysqld to swap on disk.
+.TP
+.BR " \-\-myisam\-recover [=option[,option...]]] where option is one of DEFAULT, BACKUP, FORCE or QUICK. "
+If this option is used, mysqld will on open check if the table is marked as crashed or if if the table wasn't closed properly (The last option only works if you are running with \-\-skip\-locking). If this is the case mysqld will run check on the table. If the table was corrupted, mysqld will attempt to repair it. The following options affects how the repair works.
+.BR DEFAULT
+The same as not giving any option to \-\-myisam\-recover.
+.BR BACKUP
+If the data table was changed during recover, save a backup of the `table_name.MYD' data file as `table_name\-datetime.BAK'.
+.BR FORCE
+Run recover even if we will loose more than one row from the .MYD file.
+.BR QUICK
+Don't check the rows in the table if there isn't any delete blocks.
+Before a table is automaticly repaired, mysqld will add a note about this in the error log. If you want to be able to recover from most things without user intervention, you should use the options BACKUP,FORCE. This will force a repair of a table even if some rows would be deleted, but it will keep the old data file as a backup so that you can later examine what happened.
+.TP
+.BR \-\-pid\-file=\fP\fIpath \fP
+Path to pid file used by safe_mysqld.
+.TP
+.BR \-P | \-\-port=...
+Port number to listen for TCP/IP connections.
+.TP
+.BR \-o | \-\-old\-protocol
+Use the 3.20 protocol for compatibility with some very old clients. See Mysql Manual section 4.17.3 Upgrading from Version 3.20 to Version 3.21.
+.TP
+.BR \-\-one\-thread
+Only use one thread (for debugging under Linux). See Mysql Manual section H.1 Debugging a MySQL server.
+.TP
+.BR \-O | " \-\-set\-variable var=\fP\fIoption\fP "
+Give a variable a value. \-\-help lists variables. You can find a full description for all variables in the SHOW VARIABLES section in this manual. See Mysql Manual section 7.28.4 SHOW VARIABLES. The tuning server parameters section includes information of how to optimize these. See Mysql Manual section 12.2.3 Tuning Server Parameters.
+.TP
+.BR \-Sg | \-\-skip\-grant\-tables
+This option causes the server not to use the privilege system at all. This gives everyone full access to all databases! (You can tell a running server to start using the grant tables again by executing mysqladmin flush\-privileges or mysqladmin reload.)
+.TP
+.BR \-\-safe\-mode
+Skip some optimize stages. Implies
+.BR \-\-skip\-delay\-key\-write.
+.TP
+.BR \-\-secure
+IP numbers returned by the gethostbyname() system call are checked to make sure they resolve back to the original hostname. This makes it harder for someone on the outside to get access by pretending to be another host. This option also adds some sanity checks of hostnames. The option is turned off by default in MySQL Version 3.21 because sometimes it takes a long time to perform backward resolutions. MySQL Version 3.22 caches hostnames (unless \-\-skip\-host\-cache is used) and has this option enabled by default.
+.TP
+.BR \-\-skip\-concurrent\-insert
+Turn off the ability to select and insert at the same time on MyISAM tables. (This is only to be used if you think you have found a bug in this feature).
+.TP
+.BR \-\-skip\-delay\-key\-write
+Ignore the delay_key_write option for all tables. See Mysql Manual section 12.2.3 Tuning Server Parameters.
+.TP
+.BR \-\-skip\-locking
+Don't use system locking. To use isamchk or myisamchk you must shut down the server. See Mysql Manual section 1.6 How Stable Is MySQL?. Note that in MySQL Version 3.23 you can use REPAIR and CHECK to repair/check MyISAM tables.
+.TP
+.BR \-\-skip\-name\-resolve
+Hostnames are not resolved. All Host column values in the grant tables must be IP numbers or localhost.
+.TP
+.BR \-\-skip\-networking
+Don't listen for TCP/IP connections at all. All interaction with mysqld must be made via Unix sockets. This option is highly recommended for systems where only local requests are allowed. However, this option is unsuitable for systems that use MIT\-pthreads, because the MIT\-pthreads package doesn't support Unix sockets.
+.TP
+.BR \-\-skip\-new
+Don't use new, possible wrong routines. Implies
+.BR \-\-skip\-delay\-key\-write
+. This will also set default table type to ISAM. See Mysql Manual section 8.3 ISAM Tables.
+.TP
+.BR \-\-skip\-host\-cache
+Never use host name cache for faster name\-ip resolution, but query DNS server on every connect instead.
+.TP
+.BR \-\-skip\-show\-database
+Don't allow 'SHOW DATABASE' commands, unless the user has process privilege.
+.TP
+.BR \-\-skip\-thread\-priority
+Disable using thread priorities for faster response time.
+.TP
+.BR \-\-socket=\fP\fIpath \fP
+Socket file to use for local connections instead of default /tmp/mysql.sock.
+.TP
+.BR \-t | \-\-tmpdir=\fP\fIpath\fP
+Path for temporary files. It may be useful if your default /tmp directory resides on a partition too small to hold temporary tables.
+.TP
+.BR \-u | \-\-user=\fP\fIuser_name \fP
+Run mysqld daemon as user user_name. This option is mandatory when starting mysqld as root.
+.TP
+.BR \-V | \-\-version
+Output version information and exit.
+
+.SH NOTE
+.SH "SEE ALSO"
+isamchk (1),
+isamlog (1),
+mysqlaccess (1),
+mysqladmin (1),
+mysqlbug (1),
+mysqld (1),
+mysqldump (1),
+mysqlshow (1),
+msql2mysql (1),
+perror (1),
+replace (1),
+safe_mysqld (1),
+which1 (1),
+zap (1),
+.SH AUTHOR
+Ver 1.0, distribution 3.23.29a
+Michael (Monty) Widenius (monty@tcx.se),
+TCX Datakonsult AB (http://www.tcx.se).
+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
diff --git a/man/mysqld_multi.1 b/man/mysqld_multi.1
new file mode 100644
index 00000000000..b68050e92ef
--- /dev/null
+++ b/man/mysqld_multi.1
@@ -0,0 +1,90 @@
+.TH MYSQLD_MULTI 1 "20 December 2000"
+.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 safe_mysqld to this option also. The options are passed to mysqld. Just make sure you have mysqld in your environment variable PATH or fix safe_mysqld.
+.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),
+mysqlaccess (1),
+mysqladmin (1),
+mysqlbug (1),
+mysqld (1),
+mysqldump (1),
+mysqlshow (1),
+msql2mysql (1),
+perror (1),
+replace (1),
+safe_mysqld (1),
+which1 (1),
+zap (1),
+
+.SH AUTHOR
+
+Ver 1.0, distribution 3.23.29a
+Michael (Monty) Widenius (monty@tcx.se),
+TCX Datakonsult AB (http://www.tcx.se).
+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
+
+
diff --git a/man/mysqldump.1 b/man/mysqldump.1
new file mode 100755
index 00000000000..f108da17bf9
--- /dev/null
+++ b/man/mysqldump.1
@@ -0,0 +1,273 @@
+.TH MYSQLDUMP 1 "19 December 2000"
+.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 Mysql Manual section 21.2 Database Backups.
+.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),
+mysqlaccess (1),
+mysqladmin (1),
+mysqlbug (1),
+mysqld (1),
+mysqldump (1),
+mysqlshow (1),
+msql2mysql (1),
+perror (1),
+replace (1),
+safe_mysqld (1),
+which1 (1),
+zap (1),
+.SH AUTHOR
+Ver 1.0, distribution 3.23.29a
+Michael (Monty) Widenius (monty@tcx.se),
+TCX Datakonsult AB (http://www.tcx.se).
+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 \ No newline at end of file
diff --git a/man/mysqlshow.1 b/man/mysqlshow.1
new file mode 100755
index 00000000000..55a87c1df78
--- /dev/null
+++ b/man/mysqlshow.1
@@ -0,0 +1,93 @@
+.TH MYSQLSHOW 1 "19 December 2000"
+.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),
+mysqlaccess (1),
+mysqladmin (1),
+mysqlbug (1),
+mysqld (1),
+mysqldump (1),
+mysqlshow (1),
+msql2mysql (1),
+perror (1),
+replace (1),
+safe_mysqld (1),
+which1 (1),
+zap (1),
+.SH AUTHOR
+Ver 1.0, distribution 3.23.29a
+Michael (Monty) Widenius (monty@tcx.se),
+TCX Datakonsult AB (http://www.tcx.se).
+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
diff --git a/man/perror.1 b/man/perror.1
new file mode 100755
index 00000000000..2853f2cb1ba
--- /dev/null
+++ b/man/perror.1
@@ -0,0 +1,58 @@
+.TH PERROR 1 "19 December 2000"
+.SH NAME
+.BR perror
+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 USAGE
+perror [OPTIONS] [ERRORCODE [ERRORCODE...]]
+.SH SYNOPSIS
+.B perror
+.RB [ \-? | \-\-help ]
+.RB [ \-I | \-\-info ]
+.RB [ \-s | \-\-silent ]
+.RB [ \-v | \-\-verbose ]
+.RB [ \-V | \-\-version ]
+.SH DESCRIPTION
+.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),
+mysqlaccess (1),
+mysqladmin (1),
+mysqlbug (1),
+mysqld (1),
+mysqldump (1),
+mysqlshow (1),
+msql2mysql (1),
+perror (1),
+replace (1),
+safe_mysqld (1),
+which1 (1),
+zap (1),
+.SH AUTHOR
+Ver 1.0, distribution 3.23.29a
+Michael (Monty) Widenius (monty@tcx.se),
+TCX Datakonsult AB (http://www.tcx.se).
+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
diff --git a/man/replace.1 b/man/replace.1
new file mode 100644
index 00000000000..10bcf64fc88
--- /dev/null
+++ b/man/replace.1
@@ -0,0 +1,68 @@
+.TH REPLACE 1 "20 December 2000"
+.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),
+mysqlaccess (1),
+mysqladmin (1),
+mysqlbug (1),
+mysqld (1),
+mysqldump (1),
+mysqlshow (1),
+msql2mysql (1),
+perror (1),
+replace (1),
+safe_mysqld (1),
+which1 (1),
+zap (1),
+.SH AUTHOR
+Ver 1.0, distribution 3.23.29a
+Michael (Monty) Widenius (monty@tcx.se),
+TCX Datakonsult AB (http://www.tcx.se).
+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
+
+
diff --git a/man/safe_mysqld.1 b/man/safe_mysqld.1
new file mode 100755
index 00000000000..30abf04ae6b
--- /dev/null
+++ b/man/safe_mysqld.1
@@ -0,0 +1,86 @@
+.TH SAFE_MYSQLD 1 "19 December 2000"
+.SH NAME
+.BR safe_mysqld
+is the recommended way to start a mysqld daemon on Unix. safe_mysqld adds some safety features such as restarting the server when an error occurs and logging run-time information to a log file.
+.SH SYNOPSIS
+.B safe_mysqld
+.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
+.TP
+.BR \-\-basedir=\fP\fIpath \fP
+.TP
+.BR \-\-core\-file\-size=#
+.TP
+.BR \-\-defaults\-extra\-file=\fP\fIpath \fP
+.TP
+.BR \-\-defaults\-file=\fP\fIpath \fP
+.TP
+.BR \-\-open\-files=#
+Size of the core file mysqld should be able to create. Passed to ulimit \-c.
+.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 safe_mysqld are passed to mysqld. If you wants to use any options in safe_mysqld that mysqld doesn't support, you must specify these in the option file.
+.SH "SEE ALSO"
+isamchk (1),
+isamlog (1),
+mysqlaccess (1),
+mysqladmin (1),
+mysqlbug (1),
+mysqld (1),
+mysqldump (1),
+mysqlshow (1),
+msql2mysql (1),
+perror (1),
+replace (1),
+safe_mysqld (1),
+which1 (1),
+zap (1),
+.SH AUTHOR
+Ver 1.0, distribution 3.23.29a
+Michael (Monty) Widenius (monty@tcx.se),
+TCX Datakonsult AB (http://www.tcx.se).
+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
diff --git a/man/which.2 b/man/which.2
new file mode 100644
index 00000000000..599b68080a2
--- /dev/null
+++ b/man/which.2
@@ -0,0 +1,54 @@
+.TH WHICH 1 "20 December 2000"
+.SH NAME
+which - Jani please supply one.
+.SH USAGE
+which [options] [--] programname [...]
+.SH SYNOPSIS
+.B which
+.RB [ \-\-version | \-[vV] ]
+.RB [ \-\-skip\-dot ]
+.RB [ \-\-skip\-tilde ]
+.RB [ \-\-show\-dot ]
+.RB [ \-\-show\-tilde ]
+.RB [ \-\-tty\-only ]
+.RB [ \-\-all | \-a ]
+.RB [ \-\-read\-alias | \-i ]
+.RB [ \-\-skip\-alias ]
+.SH DESCRIPTION
+.TP
+.BR which
+supports by executing
+.TP
+.BR \-\-version | \-[vV]
+Print version and exit successfully.
+.TP
+.BR \-\-skip\-dot
+Skip directories in PATH that start with a dot.
+.TP
+.BR \-\-skip\-tilde
+Skip directories in PATH that start with a tilde.
+.TP
+.BR \-\-show\-dot
+Don\'t expand a dot to current directory in output.
+.TP
+.BR \-\-show\-tilde
+Output a tilde for HOME directory for non-root.
+.TP
+.BR \-\-tty\-only
+Stop processing options on the right if not on tty.
+.TP
+.BR \-\-all | \-a
+Print all matches in PATH, not just the first
+.TP
+.BR \-\-read\-alias | \-i
+Read list of aliases from stdin.
+.TP
+.BR \-\-skip\-alias
+Ignore option
+.BR --read-alias;
+don\'t read stdin.
+.SH "SEE ALSO"
+isamchk (1), isamlog (1), mysqlaccess (1), mysqladmin (1), mysqlbug (1), mysqld (1), mysqldump (1), mysqlshow (1), msql2mysql (1), perror (1), replace (1), safe_mysqld (1), which1 (1), zap (1),
+.SH AUTHOR
+Ver 1.0, distribution 3.23.29a Michael (Monty) Widenius (monty@tcx.se), TCX Datakonsult AB (http://www.tcx.se). 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 \ No newline at end of file
diff --git a/mysys/my_write.c b/mysys/my_write.c
index 0ff32094ed7..03cbec4a0d6 100644
--- a/mysys/my_write.c
+++ b/mysys/my_write.c
@@ -47,7 +47,8 @@ uint my_write(int Filedes, const byte *Buffer, uint Count, myf MyFlags)
if (my_thread_var->abort)
MyFlags&= ~ MY_WAIT_IF_FULL; /* End if aborted by user */
#endif
- if (my_errno == ENOSPC && (MyFlags & MY_WAIT_IF_FULL))
+ if (my_errno == ENOSPC && (MyFlags & MY_WAIT_IF_FULL) &&
+ (uint) writenbytes != (uint) -1)
{
if (!(errors++ % MY_WAIT_GIVE_USER_A_MESSAGE))
my_error(EE_DISK_FULL,MYF(ME_BELL | ME_NOREFRESH),
diff --git a/scripts/mysqlaccess.sh b/scripts/mysqlaccess.sh
index dfc88ecad98..355eb53d2b5 100644
--- a/scripts/mysqlaccess.sh
+++ b/scripts/mysqlaccess.sh
@@ -8,7 +8,7 @@ use Fcntl;
BEGIN {
# ****************************
# static information...
- $VERSION = "2.05, 17 Feb 2000";
+ $VERSION = "2.06, 20 Dec 2000";
$0 =~ m%/([^/]+)$%o;
$script = $1;
$script = 'MySQLAccess' unless $script;
@@ -302,6 +302,8 @@ Release Notes:
2.05: (2000-02-17) Monty
Moved the log file from /tmp to ~
+ 2.06: Don't print '+++USING FULL WHERE CLAUSE+++'
+
_RELEASE
$TODO = <<_TODO;
@@ -1468,7 +1470,7 @@ sub Sort_table {
# server version 3.21 has a full where clause :-)
if ($MySQLaccess::Host::SERVER >= '3.21') {
-print "+++USING FULL WHERE CLAUSE+++\n";
+ # print "+++USING FULL WHERE CLAUSE+++\n";
$start = "SELECT *,UCASE(host) as ucase_host FROM $tbl WHERE ";
$end = ' ORDER BY ' . join(',', @order) . ";\n";
}
diff --git a/scripts/safe_mysqld.sh b/scripts/safe_mysqld.sh
index f1efcb292e7..9325cee4f33 100644
--- a/scripts/safe_mysqld.sh
+++ b/scripts/safe_mysqld.sh
@@ -46,7 +46,9 @@ parse_arguments() {
# safe_mysqld-specific options - must be set in my.cnf ([safe_mysqld])!
--ledir=*) ledir=`echo "$arg" | sed -e "s;--ledir=;;"` ;;
--err-log=*) err_log=`echo "$arg" | sed -e "s;--err-log=;;"` ;;
+ # QQ The --open-files should be removed
--open-files=*) open_files=`echo "$arg" | sed -e "s;--open-files=;;"` ;;
+ --open-files-limit=*) open_files=`echo "$arg" | sed -e "s;--open-files-limit=;;"` ;;
--core-file-size=*) core_file_size=`echo "$arg" | sed -e "s;--core_file_size=;;"` ;;
--timezone=*) TZ=`echo "$arg" | sed -e "s;--timezone=;;"` ; export TZ; ;;
*)
diff --git a/sql-bench/Results/ATIS-mysql-Linux_2.2.14_my_SMP_i686 b/sql-bench/Results/ATIS-mysql-Linux_2.2.14_my_SMP_i686
index 0658a828d59..4d7075ed8e3 100644
--- a/sql-bench/Results/ATIS-mysql-Linux_2.2.14_my_SMP_i686
+++ b/sql-bench/Results/ATIS-mysql-Linux_2.2.14_my_SMP_i686
@@ -1,4 +1,4 @@
-Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 21:48:32
+Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 6:39:08
ATIS table test
@@ -6,14 +6,15 @@ Creating tables
Time for create_table (28): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting data
-Time to insert (9768): 3 wallclock secs ( 0.49 usr 0.45 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to insert (9768): 3 wallclock secs ( 0.38 usr 0.42 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Retrieving data
-Time for select_simple_join (500): 2 wallclock secs ( 0.65 usr 0.26 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_join (200): 16 wallclock secs ( 4.55 usr 2.23 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_distinct (800): 12 wallclock secs ( 1.64 usr 0.81 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_group (2800): 14 wallclock secs ( 1.86 usr 0.40 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_simple_join (500): 2 wallclock secs ( 0.68 usr 0.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_join (100): 2 wallclock secs ( 0.57 usr 0.28 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_key_prefix_join (100): 13 wallclock secs ( 4.13 usr 1.96 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_distinct (800): 11 wallclock secs ( 1.84 usr 0.70 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_group (2800): 13 wallclock secs ( 1.55 usr 0.51 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Removing tables
-Time to drop_table (28): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Total time: 47 wallclock secs ( 9.20 usr 4.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to drop_table (28): 0 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 44 wallclock secs ( 9.18 usr 4.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/Results/RUN-mysql-Linux_2.2.14_my_SMP_i686 b/sql-bench/Results/RUN-mysql-Linux_2.2.14_my_SMP_i686
index 01c90de71ef..779c802059c 100644
--- a/sql-bench/Results/RUN-mysql-Linux_2.2.14_my_SMP_i686
+++ b/sql-bench/Results/RUN-mysql-Linux_2.2.14_my_SMP_i686
@@ -1,92 +1,95 @@
-Benchmark DBD suite: 2.10
-Date of test: 2000-12-17 23:35:25
+Benchmark DBD suite: 2.12
+Date of test: 2000-12-24 15:30:34
Running tests on: Linux 2.2.14-my-SMP i686
Arguments:
Comments: Intel Xeon, 2x550 Mhz, 1G ram, key_buffer=16M
Limits from:
Server version: MySQL 3.23.29a gamma
-ATIS: Total time: 47 wallclock secs ( 9.20 usr 4.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-alter-table: Total time: 463 wallclock secs ( 0.39 usr 0.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-big-tables: Total time: 32 wallclock secs ( 8.71 usr 6.83 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-connect: Total time: 79 wallclock secs (35.02 usr 18.29 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-create: Total time: 135 wallclock secs ( 9.85 usr 3.27 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-insert: Total time: 2216 wallclock secs (423.12 usr 155.81 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-select: Total time: 1312 wallclock secs (63.58 usr 18.29 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-wisconsin: Total time: 17 wallclock secs ( 3.57 usr 1.80 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+ATIS: Total time: 44 wallclock secs ( 9.18 usr 4.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+alter-table: Total time: 468 wallclock secs ( 0.25 usr 0.12 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+big-tables: Total time: 31 wallclock secs ( 8.67 usr 6.87 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+connect: Total time: 79 wallclock secs (34.39 usr 17.84 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+create: Total time: 126 wallclock secs (10.09 usr 3.20 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+insert: Total time: 2227 wallclock secs (451.81 usr 170.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+select: Total time: 1379 wallclock secs (61.35 usr 18.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+wisconsin: Total time: 16 wallclock secs ( 3.25 usr 1.72 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
All 8 test executed successfully
Totals per operation:
Operation seconds usr sys cpu tests
-alter_table_add 258.00 0.26 0.07 0.00 992
-alter_table_drop 196.00 0.07 0.01 0.00 496
-connect 13.00 7.93 2.58 0.00 10000
-connect+select_1_row 15.00 7.98 3.18 0.00 10000
-connect+select_simple 14.00 7.69 3.24 0.00 10000
-count 45.00 0.10 0.01 0.00 100
-count_distinct 124.00 0.68 0.16 0.00 2000
-count_distinct_big 111.00 7.80 5.59 0.00 120
-count_distinct_group 74.00 1.26 0.40 0.00 1000
-count_distinct_group_on_key 61.00 0.43 0.08 0.00 1000
-count_distinct_group_on_key_parts 73.00 1.27 0.42 0.00 1000
-count_group_on_key_parts 62.00 1.13 0.43 0.00 1000
-count_on_key 514.00 17.86 3.19 0.00 50100
-create+drop 36.00 2.52 0.89 0.00 10000
-create_MANY_tables 28.00 1.87 0.47 0.00 10000
+alter_table_add 263.00 0.10 0.05 0.00 992
+alter_table_drop 197.00 0.05 0.03 0.00 496
+connect 12.00 7.18 2.61 0.00 10000
+connect+select_1_row 15.00 7.75 3.29 0.00 10000
+connect+select_simple 14.00 7.39 3.61 0.00 10000
+count 47.00 0.05 0.00 0.00 100
+count_distinct 119.00 0.66 0.17 0.00 2000
+count_distinct_big 111.00 7.48 5.86 0.00 120
+count_distinct_group 80.00 1.02 0.43 0.00 1000
+count_distinct_group_on_key 60.00 0.40 0.08 0.00 1000
+count_distinct_group_on_key_parts 81.00 0.79 0.41 0.00 1000
+count_group_on_key_parts 54.00 1.00 0.47 0.00 1000
+count_on_key 559.00 17.07 3.00 0.00 50100
+create+drop 29.00 2.43 0.82 0.00 10000
+create_MANY_tables 29.00 2.27 0.46 0.00 10000
create_index 4.00 0.00 0.00 0.00 8
-create_key+drop 46.00 4.05 0.70 0.00 10000
+create_key+drop 40.00 3.97 0.87 0.00 10000
create_table 0.00 0.00 0.00 0.00 31
-delete_all 19.00 0.01 0.00 0.00 12
-delete_all_many_keys 181.00 0.02 0.00 0.00 1
+delete_all 20.00 0.00 0.00 0.00 12
+delete_all_many_keys 151.00 0.03 0.01 0.00 1
delete_big 0.00 0.00 0.00 0.00 1
-delete_big_many_keys 181.00 0.02 0.00 0.00 128
-delete_key 3.00 0.50 0.39 0.00 10000
+delete_big_many_keys 151.00 0.03 0.01 0.00 128
+delete_key 4.00 0.56 0.45 0.00 10000
drop_index 4.00 0.00 0.00 0.00 8
-drop_table 0.00 0.00 0.00 0.00 28
-drop_table_when_MANY_tables 14.00 0.60 0.60 0.00 10000
-insert 134.00 22.42 14.46 0.00 350768
-insert_duplicates 24.00 2.86 2.57 0.00 100000
-insert_key 172.00 10.70 4.06 0.00 100000
-insert_many_fields 9.00 0.39 0.10 0.00 2000
+drop_table 0.00 0.01 0.00 0.00 28
+drop_table_when_MANY_tables 12.00 0.63 0.43 0.00 10000
+insert 131.00 22.93 14.02 0.00 350768
+insert_duplicates 24.00 3.18 3.05 0.00 100000
+insert_key 154.00 10.52 4.42 0.00 100000
+insert_many_fields 9.00 0.44 0.07 0.00 2000
insert_select_1_key 7.00 0.00 0.00 0.00 1
insert_select_2_keys 9.00 0.00 0.00 0.00 1
-min_max 30.00 0.03 0.00 0.00 60
-min_max_on_key 206.00 27.71 4.96 0.00 85000
-multiple_value_insert 9.00 1.92 0.07 0.00 100000
-order_by_big 53.00 22.27 16.17 0.00 10
-order_by_big_key 33.00 22.36 10.06 0.00 10
-order_by_big_key2 33.00 22.83 9.51 0.00 10
-order_by_big_key_desc 32.00 22.03 10.36 0.00 10
-order_by_big_key_diff 49.00 21.98 16.40 0.00 10
-order_by_key 3.00 1.28 0.40 0.00 500
-order_by_key2_diff 5.00 1.91 0.83 0.00 500
-order_by_range 5.00 1.09 0.51 0.00 500
-outer_join 73.00 0.01 0.00 0.00 10
-outer_join_found 70.00 0.00 0.00 0.00 10
-outer_join_not_found 50.00 0.00 0.01 0.00 500
-outer_join_on_key 61.00 0.00 0.00 0.00 10
-select_1_row 3.00 0.71 0.67 0.00 10000
-select_2_rows 3.00 0.65 0.68 0.00 10000
-select_big 58.00 31.42 17.06 0.00 10080
-select_column+column 4.00 0.48 0.60 0.00 10000
-select_diff_key 184.00 0.36 0.02 0.00 500
-select_distinct 12.00 1.64 0.81 0.00 800
-select_group 70.00 1.92 0.41 0.00 2911
-select_group_when_MANY_tables 11.00 0.81 0.61 0.00 10000
-select_join 16.00 4.55 2.23 0.00 200
-select_key 126.00 68.62 14.75 0.00 200000
-select_key2 134.00 73.78 14.11 0.00 200000
-select_key_prefix 136.00 69.37 14.48 0.00 200000
-select_many_fields 22.00 8.31 6.73 0.00 2000
-select_range 201.00 9.29 3.51 0.00 410
-select_range_key2 18.00 6.59 1.71 0.00 25010
-select_range_prefix 20.00 6.80 1.51 0.00 25010
-select_simple 2.00 0.53 0.51 0.00 10000
-select_simple_join 2.00 0.65 0.26 0.00 500
-update_big 65.00 0.00 0.00 0.00 10
-update_of_key 97.00 3.15 2.09 0.00 50256
-update_of_key_big 33.00 0.01 0.02 0.00 501
-update_with_key 116.00 15.94 12.19 0.00 300000
-wisc_benchmark 4.00 1.92 0.66 0.00 114
-TOTALS 4480.00 553.34 208.50 0.00 1946237
+min_max 32.00 0.01 0.00 0.00 60
+min_max_on_key 238.00 27.34 5.17 0.00 85000
+multiple_value_insert 9.00 1.88 0.06 0.00 100000
+order_by_big 52.00 22.29 15.95 0.00 10
+order_by_big_key 34.00 23.91 10.39 0.00 10
+order_by_big_key2 33.00 22.58 10.06 0.00 10
+order_by_big_key_desc 36.00 23.89 10.41 0.00 10
+order_by_big_key_diff 50.00 22.07 16.43 0.00 10
+order_by_big_key_prefix 32.00 22.21 10.50 0.00 10
+order_by_key2_diff 5.00 1.12 0.07 0.00 500
+order_by_key_prefix 3.00 1.10 0.38 0.00 500
+order_by_range 5.00 1.14 0.41 0.00 500
+outer_join 72.00 0.00 0.00 0.00 10
+outer_join_found 67.00 0.00 0.01 0.00 10
+outer_join_not_found 50.00 0.00 0.00 0.00 500
+outer_join_on_key 57.00 0.01 0.00 0.00 10
+select_1_row 2.00 0.45 0.57 0.00 10000
+select_2_rows 3.00 0.59 0.61 0.00 10000
+select_big 62.00 32.48 15.99 0.00 10080
+select_column+column 3.00 0.58 0.68 0.00 10000
+select_diff_key 191.00 0.33 0.03 0.00 500
+select_distinct 11.00 1.84 0.70 0.00 800
+select_group 67.00 1.60 0.52 0.00 2911
+select_group_when_MANY_tables 16.00 0.79 0.62 0.00 10000
+select_join 2.00 0.57 0.28 0.00 100
+select_key 126.00 68.35 14.42 0.00 200000
+select_key2 132.00 69.41 13.86 0.00 200000
+select_key_prefix 134.00 71.19 14.71 0.00 200000
+select_key_prefix_join 13.00 4.13 1.96 0.00 100
+select_many_fields 22.00 8.22 6.80 0.00 2000
+select_range 194.00 9.08 3.79 0.00 410
+select_range_key2 18.00 6.36 1.64 0.00 25010
+select_range_prefix 20.00 6.82 1.38 0.00 25010
+select_simple 2.00 0.47 0.71 0.00 10000
+select_simple_join 2.00 0.68 0.19 0.00 500
+update_big 64.00 0.00 0.00 0.00 10
+update_of_key 88.00 2.82 2.30 0.00 50256
+update_of_key_big 33.00 0.11 0.03 0.00 501
+update_with_key 113.00 17.01 12.17 0.00 300000
+update_with_key_prefix 32.00 5.68 4.36 0.00 100000
+wisc_benchmark 4.00 1.80 0.69 0.00 114
+TOTALS 4519.00 578.85 223.47 0.00 2046247
diff --git a/sql-bench/Results/alter-table-mysql-Linux_2.2.14_my_SMP_i686 b/sql-bench/Results/alter-table-mysql-Linux_2.2.14_my_SMP_i686
index edf04cd304b..1e58f7a49dc 100644
--- a/sql-bench/Results/alter-table-mysql-Linux_2.2.14_my_SMP_i686
+++ b/sql-bench/Results/alter-table-mysql-Linux_2.2.14_my_SMP_i686
@@ -1,16 +1,16 @@
-Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 21:49:19
+Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 6:39:53
Testing of ALTER TABLE
Testing with 1000 columns and 1000 rows in 20 steps
Insert data into the table
-Time for insert (1000) 1 wallclock secs ( 0.06 usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for insert (1000) 0 wallclock secs ( 0.09 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for alter_table_add (992): 258 wallclock secs ( 0.26 usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for alter_table_add (992): 263 wallclock secs ( 0.10 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for create_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for drop_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for alter_table_drop (496): 196 wallclock secs ( 0.07 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for alter_table_drop (496): 197 wallclock secs ( 0.05 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Total time: 463 wallclock secs ( 0.39 usr 0.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 468 wallclock secs ( 0.25 usr 0.12 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/Results/big-tables-mysql-Linux_2.2.14_my_SMP_i686 b/sql-bench/Results/big-tables-mysql-Linux_2.2.14_my_SMP_i686
index a9ba6d06997..e8235536b44 100644
--- a/sql-bench/Results/big-tables-mysql-Linux_2.2.14_my_SMP_i686
+++ b/sql-bench/Results/big-tables-mysql-Linux_2.2.14_my_SMP_i686
@@ -1,19 +1,19 @@
-Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 21:57:03
+Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 6:47:42
Testing of some unusual tables
All tests are done 1000 times with 1000 fields
Testing table with 1000 fields
Testing select * from table with 1 record
-Time to select_many_fields(1000): 9 wallclock secs ( 4.22 usr 3.26 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to select_many_fields(1000): 9 wallclock secs ( 4.02 usr 3.44 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select all_fields from table with 1 record
-Time to select_many_fields(1000): 13 wallclock secs ( 4.09 usr 3.47 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to select_many_fields(1000): 13 wallclock secs ( 4.20 usr 3.36 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert VALUES()
-Time to insert_many_fields(1000): 3 wallclock secs ( 0.34 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to insert_many_fields(1000): 3 wallclock secs ( 0.37 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert (all_fields) VALUES()
-Time to insert_many_fields(1000): 6 wallclock secs ( 0.05 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to insert_many_fields(1000): 6 wallclock secs ( 0.07 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Total time: 32 wallclock secs ( 8.71 usr 6.83 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 31 wallclock secs ( 8.67 usr 6.87 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/Results/connect-mysql-Linux_2.2.14_my_SMP_i686 b/sql-bench/Results/connect-mysql-Linux_2.2.14_my_SMP_i686
index 5aa94079de2..6a3869a0ab2 100644
--- a/sql-bench/Results/connect-mysql-Linux_2.2.14_my_SMP_i686
+++ b/sql-bench/Results/connect-mysql-Linux_2.2.14_my_SMP_i686
@@ -1,30 +1,30 @@
-Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 21:57:35
+Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 6:48:14
Testing the speed of connecting to the server and sending of data
All tests are done 10000 times
Testing connection/disconnect
-Time to connect (10000): 13 wallclock secs ( 7.93 usr 2.58 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to connect (10000): 12 wallclock secs ( 7.18 usr 2.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test connect/simple select/disconnect
-Time for connect+select_simple (10000): 14 wallclock secs ( 7.69 usr 3.24 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for connect+select_simple (10000): 14 wallclock secs ( 7.39 usr 3.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test simple select
-Time for select_simple (10000): 2 wallclock secs ( 0.53 usr 0.51 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_simple (10000): 2 wallclock secs ( 0.47 usr 0.71 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing connect/select 1 row from table/disconnect
-Time to connect+select_1_row (10000): 15 wallclock secs ( 7.98 usr 3.18 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to connect+select_1_row (10000): 15 wallclock secs ( 7.75 usr 3.29 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select 1 row from table
-Time to select_1_row (10000): 3 wallclock secs ( 0.71 usr 0.67 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to select_1_row (10000): 2 wallclock secs ( 0.45 usr 0.57 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select 2 rows from table
-Time to select_2_rows (10000): 3 wallclock secs ( 0.65 usr 0.68 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to select_2_rows (10000): 3 wallclock secs ( 0.59 usr 0.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test select with aritmetic (+)
-Time for select_column+column (10000): 4 wallclock secs ( 0.48 usr 0.60 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_column+column (10000): 3 wallclock secs ( 0.58 usr 0.68 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing retrieval of big records (65000 bytes)
-Time to select_big (10000): 25 wallclock secs ( 9.05 usr 6.81 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to select_big (10000): 28 wallclock secs ( 9.97 usr 5.76 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Total time: 79 wallclock secs (35.02 usr 18.29 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 79 wallclock secs (34.39 usr 17.84 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/Results/create-mysql-Linux_2.2.14_my_SMP_i686 b/sql-bench/Results/create-mysql-Linux_2.2.14_my_SMP_i686
index 1c7699dda72..e363a7adc9f 100644
--- a/sql-bench/Results/create-mysql-Linux_2.2.14_my_SMP_i686
+++ b/sql-bench/Results/create-mysql-Linux_2.2.14_my_SMP_i686
@@ -1,18 +1,18 @@
-Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 21:58:54
+Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 15:28:12
Testing the speed of creating and droping tables
Testing with 10000 tables and 10000 loop count
Testing create of tables
-Time for create_MANY_tables (10000): 28 wallclock secs ( 1.87 usr 0.47 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for create_MANY_tables (10000): 29 wallclock secs ( 2.27 usr 0.46 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Accessing tables
-Time to select_group_when_MANY_tables (10000): 11 wallclock secs ( 0.81 usr 0.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to select_group_when_MANY_tables (10000): 16 wallclock secs ( 0.79 usr 0.62 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing drop
-Time for drop_table_when_MANY_tables (10000): 14 wallclock secs ( 0.60 usr 0.60 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for drop_table_when_MANY_tables (10000): 12 wallclock secs ( 0.63 usr 0.43 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing create+drop
-Time for create+drop (10000): 36 wallclock secs ( 2.52 usr 0.89 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for create_key+drop (10000): 46 wallclock secs ( 4.05 usr 0.70 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Total time: 135 wallclock secs ( 9.85 usr 3.27 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for create+drop (10000): 29 wallclock secs ( 2.43 usr 0.82 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for create_key+drop (10000): 40 wallclock secs ( 3.97 usr 0.87 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 126 wallclock secs (10.09 usr 3.20 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/Results/insert-mysql-Linux_2.2.14_my_SMP_i686 b/sql-bench/Results/insert-mysql-Linux_2.2.14_my_SMP_i686
index af085f00b84..034e06ab81b 100644
--- a/sql-bench/Results/insert-mysql-Linux_2.2.14_my_SMP_i686
+++ b/sql-bench/Results/insert-mysql-Linux_2.2.14_my_SMP_i686
@@ -1,4 +1,4 @@
-Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 22:01:09
+Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 6:49:34
Testing the speed of inserting data into 1 table and do some selects on it.
The tests are done with a table that has 100000 rows.
@@ -8,53 +8,55 @@ Creating tables
Inserting 100000 rows in order
Inserting 100000 rows in reverse order
Inserting 100000 rows in random order
-Time for insert (300000): 114 wallclock secs (19.41 usr 12.48 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for insert (300000): 111 wallclock secs (20.07 usr 12.09 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert of duplicates
-Time for insert_duplicates (100000): 24 wallclock secs ( 2.86 usr 2.57 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for insert_duplicates (100000): 24 wallclock secs ( 3.18 usr 3.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Retrieving data from the table
-Time for select_big (10:3000000): 32 wallclock secs (22.21 usr 10.20 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for order_by_big_key (10:3000000): 33 wallclock secs (22.36 usr 10.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for order_by_big_key_desc (10:3000000): 32 wallclock secs (22.03 usr 10.36 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for order_by_big_key2 (10:3000000): 33 wallclock secs (22.83 usr 9.51 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for order_by_big_key_diff (10:3000000): 49 wallclock secs (21.98 usr 16.40 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for order_by_big (10:3000000): 53 wallclock secs (22.27 usr 16.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for order_by_range (500:125750): 5 wallclock secs ( 1.09 usr 0.51 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for order_by_key (500:125750): 3 wallclock secs ( 1.28 usr 0.40 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for order_by_key2_diff (500:250500): 5 wallclock secs ( 1.91 usr 0.83 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_diff_key (500:1000): 184 wallclock secs ( 0.36 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_range_prefix (5010:42084): 11 wallclock secs ( 3.09 usr 0.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_range_key2 (5010:42084): 10 wallclock secs ( 3.00 usr 0.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_key_prefix (200000): 136 wallclock secs (69.37 usr 14.48 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_key (200000): 126 wallclock secs (68.62 usr 14.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_key2 (200000): 134 wallclock secs (73.78 usr 14.11 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_big (10:3000000): 33 wallclock secs (22.37 usr 10.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for order_by_big_key (10:3000000): 34 wallclock secs (23.91 usr 10.39 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for order_by_big_key_desc (10:3000000): 36 wallclock secs (23.89 usr 10.41 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for order_by_big_key_prefix (10:3000000): 32 wallclock secs (22.21 usr 10.50 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for order_by_big_key2 (10:3000000): 33 wallclock secs (22.58 usr 10.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for order_by_big_key_diff (10:3000000): 50 wallclock secs (22.07 usr 16.43 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for order_by_big (10:3000000): 52 wallclock secs (22.29 usr 15.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for order_by_range (500:125750): 5 wallclock secs ( 1.14 usr 0.41 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for order_by_key_prefix (500:125750): 3 wallclock secs ( 1.10 usr 0.38 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for order_by_key2_diff (500:250500): 5 wallclock secs ( 1.12 usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_diff_key (500:1000): 191 wallclock secs ( 0.33 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_range_prefix (5010:42084): 11 wallclock secs ( 3.03 usr 0.63 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_range_key2 (5010:42084): 10 wallclock secs ( 2.59 usr 0.68 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_key_prefix (200000): 134 wallclock secs (71.19 usr 14.71 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_key (200000): 126 wallclock secs (68.35 usr 14.42 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_key2 (200000): 132 wallclock secs (69.41 usr 13.86 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test of compares with simple ranges
-Time for select_range_prefix (20000:43500): 9 wallclock secs ( 3.71 usr 0.90 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_range_key2 (20000:43500): 8 wallclock secs ( 3.59 usr 0.96 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_group (111): 56 wallclock secs ( 0.06 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for min_max_on_key (15000): 8 wallclock secs ( 4.85 usr 0.88 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for min_max (60): 30 wallclock secs ( 0.03 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_on_key (100): 47 wallclock secs ( 0.04 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count (100): 45 wallclock secs ( 0.10 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_distinct_big (20): 64 wallclock secs ( 0.01 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_range_prefix (20000:43500): 9 wallclock secs ( 3.79 usr 0.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_range_key2 (20000:43500): 8 wallclock secs ( 3.77 usr 0.96 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_group (111): 54 wallclock secs ( 0.05 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for min_max_on_key (15000): 8 wallclock secs ( 4.55 usr 0.93 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for min_max (60): 32 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_on_key (100): 51 wallclock secs ( 0.09 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count (100): 47 wallclock secs ( 0.05 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_distinct_big (20): 64 wallclock secs ( 0.02 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update of keys with functions
-Time for update_of_key (50000): 23 wallclock secs ( 3.12 usr 2.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for update_of_key_big (501): 33 wallclock secs ( 0.01 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for update_of_key (50000): 23 wallclock secs ( 2.80 usr 2.29 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for update_of_key_big (501): 33 wallclock secs ( 0.11 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update with key
-Time for update_with_key (300000): 116 wallclock secs (15.94 usr 12.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for update_with_key (300000): 113 wallclock secs (17.01 usr 12.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for update_with_key_prefix (100000): 32 wallclock secs ( 5.68 usr 4.36 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update of all rows
-Time for update_big (10): 65 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for update_big (10): 64 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing left outer join
-Time for outer_join_on_key (10:10): 61 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for outer_join (10:10): 73 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for outer_join_found (10:10): 70 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for outer_join_not_found (500:10): 50 wallclock secs ( 0.00 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for outer_join_on_key (10:10): 57 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for outer_join (10:10): 72 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for outer_join_found (10:10): 67 wallclock secs ( 0.00 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for outer_join_not_found (500:10): 50 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing INSERT INTO ... SELECT
Time for insert_select_1_key (1): 7 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
@@ -62,24 +64,24 @@ Time for insert_select_2_keys (1): 9 wallclock secs ( 0.00 usr 0.00 sys + 0.
Time for drop table(2): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing delete
-Time for delete_key (10000): 3 wallclock secs ( 0.50 usr 0.39 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for delete_all (12): 19 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for delete_key (10000): 4 wallclock secs ( 0.56 usr 0.45 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for delete_all (12): 20 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Insert into table with 16 keys and with a primary key with 16 parts
-Time for insert_key (100000): 172 wallclock secs (10.70 usr 4.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for insert_key (100000): 154 wallclock secs (10.52 usr 4.42 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update of keys
-Time for update_of_key (256): 74 wallclock secs ( 0.03 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for update_of_key (256): 65 wallclock secs ( 0.02 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Deleting rows from the table
-Time for delete_big_many_keys (128): 181 wallclock secs ( 0.02 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for delete_big_many_keys (128): 151 wallclock secs ( 0.03 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Deleting everything from table
-Time for delete_all_many_keys (1): 181 wallclock secs ( 0.02 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for delete_all_many_keys (1): 151 wallclock secs ( 0.03 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting 100000 rows with multiple values
-Time for multiple_value_insert (100000): 9 wallclock secs ( 1.92 usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for multiple_value_insert (100000): 9 wallclock secs ( 1.88 usr 0.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for drop table(1): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Total time: 2216 wallclock secs (423.12 usr 155.81 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 2227 wallclock secs (451.81 usr 170.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/Results/select-mysql-Linux_2.2.14_my_SMP_i686 b/sql-bench/Results/select-mysql-Linux_2.2.14_my_SMP_i686
index 4fe416e8f2e..8c7eed79c64 100644
--- a/sql-bench/Results/select-mysql-Linux_2.2.14_my_SMP_i686
+++ b/sql-bench/Results/select-mysql-Linux_2.2.14_my_SMP_i686
@@ -1,23 +1,23 @@
-Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 22:38:07
+Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 7:26:42
Testing the speed of selecting on keys that consist of many parts
The test-table has 10000 rows and the test is done with 500 ranges.
Creating table
Inserting 10000 rows
-Time to insert (10000): 4 wallclock secs ( 0.88 usr 0.39 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to insert (10000): 5 wallclock secs ( 1.03 usr 0.48 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing big selects on the table
-Time for select_big (70:17207): 1 wallclock secs ( 0.16 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_range (410:1057904): 201 wallclock secs ( 9.29 usr 3.51 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for min_max_on_key (70000): 198 wallclock secs (22.86 usr 4.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_on_key (50000): 467 wallclock secs (17.82 usr 3.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_big (70:17207): 1 wallclock secs ( 0.14 usr 0.04 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_range (410:1057904): 194 wallclock secs ( 9.08 usr 3.79 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for min_max_on_key (70000): 230 wallclock secs (22.79 usr 4.24 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_on_key (50000): 508 wallclock secs (16.98 usr 2.98 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_group_on_key_parts (1000:100000): 62 wallclock secs ( 1.13 usr 0.43 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_group_on_key_parts (1000:100000): 54 wallclock secs ( 1.00 usr 0.47 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing count(distinct) on the table
-Time for count_distinct (2000:2000): 124 wallclock secs ( 0.68 usr 0.16 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_distinct_group_on_key (1000:6000): 61 wallclock secs ( 0.43 usr 0.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_distinct_group_on_key_parts (1000:100000): 73 wallclock secs ( 1.27 usr 0.42 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_distinct_group (1000:100000): 74 wallclock secs ( 1.26 usr 0.40 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_distinct_big (100:1000000): 47 wallclock secs ( 7.79 usr 5.58 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Total time: 1312 wallclock secs (63.58 usr 18.29 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_distinct (2000:2000): 119 wallclock secs ( 0.66 usr 0.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_distinct_group_on_key (1000:6000): 60 wallclock secs ( 0.40 usr 0.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_distinct_group_on_key_parts (1000:100000): 81 wallclock secs ( 0.79 usr 0.41 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_distinct_group (1000:100000): 80 wallclock secs ( 1.02 usr 0.43 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_distinct_big (100:1000000): 47 wallclock secs ( 7.46 usr 5.86 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 1379 wallclock secs (61.35 usr 18.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/Results/wisconsin-mysql-Linux_2.2.14_my_SMP_i686 b/sql-bench/Results/wisconsin-mysql-Linux_2.2.14_my_SMP_i686
index 4859ad596d6..8d3875bd5e6 100644
--- a/sql-bench/Results/wisconsin-mysql-Linux_2.2.14_my_SMP_i686
+++ b/sql-bench/Results/wisconsin-mysql-Linux_2.2.14_my_SMP_i686
@@ -1,14 +1,14 @@
-Testing server 'MySQL 3.23.29a gamma' at 2000-12-17 22:59:59
+Testing server 'MySQL 3.23.29a gamma' at 2000-12-24 7:49:42
Wisconsin benchmark test
Time for create_table (3): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting data
-Time to insert (31000): 13 wallclock secs ( 1.64 usr 1.14 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to insert (31000): 12 wallclock secs ( 1.45 usr 1.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to delete_big (1): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Running actual benchmark
-Time for wisc_benchmark (114): 4 wallclock secs ( 1.92 usr 0.66 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for wisc_benchmark (114): 4 wallclock secs ( 1.80 usr 0.69 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Total time: 17 wallclock secs ( 3.57 usr 1.80 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 16 wallclock secs ( 3.25 usr 1.72 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/bench-init.pl.sh b/sql-bench/bench-init.pl.sh
index af292257bab..54a5d624b32 100644
--- a/sql-bench/bench-init.pl.sh
+++ b/sql-bench/bench-init.pl.sh
@@ -31,7 +31,7 @@
# $server Object for current server
# $limits Hash reference to limits for benchmark
-$benchmark_version="2.10";
+$benchmark_version="2.11";
use Getopt::Long;
require "$pwd/server-cfg" || die "Can't read Configuration file: $!\n";
diff --git a/sql-bench/server-cfg.sh b/sql-bench/server-cfg.sh
index 02dbb5dd712..6e27e84a08d 100644
--- a/sql-bench/server-cfg.sh
+++ b/sql-bench/server-cfg.sh
@@ -188,6 +188,13 @@ sub new
$smds{'q16'} = 'a';
$smds{'q17'} = 'c';
+ # Some fixes that depends on the environment
+ if (defined($main::opt_create_options) &&
+ $main::opt_create_options =~ /type=heap/i)
+ {
+ $limits{'working_blobs'} = 0; # HEAP tables can't handle BLOB's
+ }
+
return $self;
}
diff --git a/sql-bench/test-ATIS.sh b/sql-bench/test-ATIS.sh
index 3ec6a4c6ed8..77e0e7d79bf 100644
--- a/sql-bench/test-ATIS.sh
+++ b/sql-bench/test-ATIS.sh
@@ -167,7 +167,9 @@ print "Retrieving data\n";
);
@Q2=("select_join",
- "select airline.airline_name,aircraft.aircraft_type from aircraft,airline,flight where flight.aircraft_code=aircraft.aircraft_code and flight.airline_code=airline.airline_code",579,1,
+ "select airline.airline_name,aircraft.aircraft_type from aircraft,airline,flight where flight.aircraft_code=aircraft.aircraft_code and flight.airline_code=airline.airline_code",579,1);
+
+@Q21=("select_key_prefix_join",
"select fare.fare_code from restrict_carrier,airline,fare where restrict_carrier.airline_code=airline.airline_code and fare.restrict_code=restrict_carrier.restrict_code",5692,1,
);
@@ -214,7 +216,7 @@ print "Retrieving data\n";
"select engines,category,cruising_speed,from_airport,to_airport FROM aircraft,flight WHERE category='JET' AND ENGINES >= 1 AND aircraft.aircraft_code=flight.aircraft_code AND to_airport NOT LIKE from_airport AND stops>0 GROUP BY engines,category,cruising_speed,from_airport,to_airport ORDER BY engines DESC",29,$limits->{'group_functions'} && $limits->{'like_with_column'},
);
-@Q=(\@Q1,\@Q2,\@Q3,\@Q4);
+@Q=(\@Q1,\@Q2,\@Q21,\@Q3,\@Q4);
foreach $Q (@Q)
diff --git a/sql-bench/test-insert.sh b/sql-bench/test-insert.sh
index 7bed5f18c3d..b2fa52cfdf1 100644
--- a/sql-bench/test-insert.sh
+++ b/sql-bench/test-insert.sh
@@ -291,7 +291,7 @@ $loop_time=new Benchmark;
$estimated=$rows=0;
for ($i=1 ; $i <= $small_loop_count ; $i++)
{
- $rows+=fetch_all_rows($dbh,"select id from bench1 order by id",1);
+ $rows+=fetch_all_rows($dbh,"select id,id2 from bench1 order by id,id2",1);
$end_time=new Benchmark;
last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i,
$small_loop_count));
@@ -303,11 +303,12 @@ else
print " for order_by_big_key ($small_loop_count:$rows): " .
timestr(timediff($end_time, $loop_time),"all") . "\n";
+
$loop_time=new Benchmark;
$estimated=$rows=0;
for ($i=1 ; $i <= $small_loop_count ; $i++)
{
- $rows+=fetch_all_rows($dbh,"select id from bench1 order by id desc",1);
+ $rows+=fetch_all_rows($dbh,"select id,id2 from bench1 order by id desc, id2 desc",1);
$end_time=new Benchmark;
last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i,
$small_loop_count));
@@ -319,6 +320,24 @@ else
print " for order_by_big_key_desc ($small_loop_count:$rows): " .
timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+$loop_time=new Benchmark;
+$estimated=$rows=0;
+for ($i=1 ; $i <= $small_loop_count ; $i++)
+{
+ $rows+=fetch_all_rows($dbh,"select id from bench1 order by id desc",1);
+ $end_time=new Benchmark;
+ last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$i,
+ $small_loop_count));
+}
+if ($estimated)
+{ print "Estimated time"; }
+else
+{ print "Time"; }
+print " for order_by_big_key_prefix ($small_loop_count:$rows): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
+
$loop_time=new Benchmark;
$estimated=$rows=0;
for ($i=1 ; $i <= $small_loop_count ; $i++)
@@ -407,7 +426,7 @@ if ($estimated)
{ print "Estimated time"; }
else
{ print "Time"; }
-print " for order_by_key ($range_loop_count:$rows): " .
+print " for order_by_key_prefix ($range_loop_count:$rows): " .
timestr(timediff($end_time, $loop_time),"all") . "\n";
$sel=$limits->{'order_by_unused'} ? "id2" : "id2,id3";
@@ -889,13 +908,23 @@ print "Testing update with key\n";
$loop_time=new Benchmark;
for ($i=0 ; $i < $opt_loop_count*3 ; $i++)
{
- $sth = $dbh->do("update bench1 set dummy1='updated' where id=$i") or die $DBI::errstr;
+ $sth = $dbh->do("update bench1 set dummy1='updated' where id=$i and id2=$i") or die $DBI::errstr;
}
$end_time=new Benchmark;
print "Time for update_with_key (" . ($opt_loop_count*3) . "): " .
timestr(timediff($end_time, $loop_time),"all") . "\n";
+$loop_time=new Benchmark;
+for ($i=0 ; $i < $opt_loop_count*3 ; $i+=3)
+{
+ $sth = $dbh->do("update bench1 set dummy1='updated' where id=$i") or die $DBI::errstr;
+}
+
+$end_time=new Benchmark;
+print "Time for update_with_key_prefix (" . ($opt_loop_count) . "): " .
+ timestr(timediff($end_time, $loop_time),"all") . "\n";
+
print "\nTesting update of all rows\n";
$loop_time=new Benchmark;
for ($i=0 ; $i < $small_loop_count ; $i++)
@@ -1530,7 +1559,12 @@ sub check_or_range
$estimated=0;
$loop_time=new Benchmark;
$found=0;
- $loop_count=$range_loop_count*10;
+ # The number of tests must be divisible by the following
+ $tmp= $limits->{'func_extra_in_num'} ? 15 : 10;
+ # We need to calculate the exact number of test to make 'Estimated' right
+ $loop_count=$range_loop_count*10+$tmp-1;
+ $loop_count=$loop_count- ($loop_count % $tmp);
+
for ($count=0 ; $count < $loop_count ; )
{
for ($rowcnt=0; $rowcnt <= $columns; $rowcnt+= $columns/4)
diff --git a/sql/ha_berkeley.cc b/sql/ha_berkeley.cc
index 5f01d44e091..0db001783c1 100644
--- a/sql/ha_berkeley.cc
+++ b/sql/ha_berkeley.cc
@@ -76,7 +76,8 @@
const char *ha_berkeley_ext=".db";
bool berkeley_skip=0,berkeley_shared_data=0;
-u_int32_t berkeley_init_flags= DB_PRIVATE, berkeley_lock_type=DB_LOCK_DEFAULT;
+u_int32_t berkeley_init_flags= DB_PRIVATE | DB_RECOVER, berkeley_env_flags=0,
+ berkeley_lock_type=DB_LOCK_DEFAULT;
ulong berkeley_cache_size;
char *berkeley_home, *berkeley_tmpdir, *berkeley_logdir;
long berkeley_lock_scan_time=0;
@@ -125,6 +126,7 @@ bool berkeley_init(void)
db_env->set_noticecall(db_env, berkeley_noticecall);
db_env->set_tmp_dir(db_env, berkeley_tmpdir);
db_env->set_data_dir(db_env, mysql_data_home);
+ db_env->set_flags(db_env, berkeley_env_flags, 1);
if (berkeley_logdir)
db_env->set_lg_dir(db_env, berkeley_logdir);
@@ -790,6 +792,7 @@ int ha_berkeley::write_row(byte * record)
error=file->put(file, transaction, create_key(&prim_key, primary_key,
key_buff, record),
&row, key_type[primary_key]);
+ last_dup_key=primary_key;
}
else
{
@@ -818,6 +821,8 @@ int ha_berkeley::write_row(byte * record)
}
}
}
+ else
+ last_dup_key=primary_key;
if (!error)
{
DBUG_PRINT("trans",("committing subtransaction"));
diff --git a/sql/ha_berkeley.h b/sql/ha_berkeley.h
index b84a195e81c..1e32fdb8a7c 100644
--- a/sql/ha_berkeley.h
+++ b/sql/ha_berkeley.h
@@ -53,7 +53,8 @@ class ha_berkeley: public handler
ulong alloced_rec_buff_length;
ulong changed_rows;
uint primary_key,last_dup_key, hidden_primary_key, version;
- bool fixed_length_row, fixed_length_primary_key, key_read;
+ u_int32_t lock_on_read;
+ bool fixed_length_row, fixed_length_primary_key, key_read, using_ignore;
bool fix_rec_buff_for_blob(ulong length);
byte current_ident[BDB_HIDDEN_PRIMARY_KEY_LENGTH];
@@ -157,7 +158,8 @@ class ha_berkeley: public handler
};
extern bool berkeley_skip, berkeley_shared_data;
-extern u_int32_t berkeley_init_flags,berkeley_lock_type,berkeley_lock_types[];
+extern u_int32_t berkeley_init_flags,berkeley_env_flags, berkeley_lock_type,
+ berkeley_lock_types[];
extern ulong berkeley_cache_size, berkeley_max_lock;
extern char *berkeley_home, *berkeley_tmpdir, *berkeley_logdir;
extern long berkeley_lock_scan_time;
diff --git a/sql/mysql_priv.h b/sql/mysql_priv.h
index 0980c91e444..2f171259699 100644
--- a/sql/mysql_priv.h
+++ b/sql/mysql_priv.h
@@ -125,7 +125,7 @@ void kill_one_thread(THD *thd, ulong id);
#define QUERY_PRIOR 6
#endif /* __WIN92__ */
- /* Bits fro testflag */
+ /* Bits from testflag */
#define TEST_PRINT_CACHED_TABLES 1
#define TEST_NO_KEY_GROUP 2
#define TEST_MIT_THREAD 4
@@ -161,6 +161,7 @@ void kill_one_thread(THD *thd, ulong id);
#define OPTION_BEGIN OPTION_NOT_AUTO_COMMIT*2
#define OPTION_QUICK OPTION_BEGIN*2
#define OPTION_QUOTE_SHOW_CREATE OPTION_QUICK*2
+#define OPTION_INTERNAL_SUBTRANSACTIONS OPTION_QUOTE_SHOW_CREATE*2
/* Set if we are updating a non-transaction safe table */
#define OPTION_STATUS_NO_TRANS_UPDATE OPTION_QUOTE_SHOW_CREATE*2
diff --git a/sql/mysqld.cc b/sql/mysqld.cc
index ccf61ec8303..d214bf46533 100644
--- a/sql/mysqld.cc
+++ b/sql/mysqld.cc
@@ -204,7 +204,8 @@ ulong keybuff_size,sortbuff_size,max_item_sort_length,table_cache_size,
thread_stack_min,net_wait_timeout,what_to_log= ~ (1L << (uint) COM_TIME),
query_buff_size, lower_case_table_names, mysqld_net_retry_count,
net_interactive_timeout, slow_launch_time = 2L,
- net_read_timeout,net_write_timeout,slave_open_temp_tables=0;
+ net_read_timeout,net_write_timeout,slave_open_temp_tables=0,
+ open_files_limit=0;
ulong thread_cache_size=0, binlog_cache_size=0, max_binlog_cache_size=0;
volatile ulong cached_thread_count=0;
@@ -1538,8 +1539,10 @@ int main(int argc, char **argv)
{
uint wanted_files=10+(uint) max(max_connections*5,
max_connections+table_cache_size*2);
+ set_if_bigger(wanted_files, open_files_limit);
+ // Note that some system returns 0 if we succeed here:
uint files=set_maximum_open_files(wanted_files);
- if (files && files < wanted_files) // Some systems return 0
+ if (files && files < wanted_files && ! open_files_limit)
{
max_connections= (ulong) min((files-10),max_connections);
table_cache_size= (ulong) max((files-10-max_connections)/2,64);
@@ -2302,7 +2305,7 @@ enum options {
OPT_BDB_HOME, OPT_BDB_LOG,
OPT_BDB_TMP, OPT_BDB_NOSYNC,
OPT_BDB_LOCK, OPT_BDB_SKIP,
- OPT_BDB_RECOVER, OPT_BDB_SHARED,
+ OPT_BDB_NO_RECOVER, OPT_BDB_SHARED,
OPT_MASTER_HOST,
OPT_MASTER_USER, OPT_MASTER_PASSWORD,
OPT_MASTER_PORT, OPT_MASTER_INFO_FILE,
@@ -2329,7 +2332,7 @@ static struct option long_options[] = {
{"bdb-home", required_argument, 0, (int) OPT_BDB_HOME},
{"bdb-lock-detect", required_argument, 0, (int) OPT_BDB_LOCK},
{"bdb-logdir", required_argument, 0, (int) OPT_BDB_LOG},
- {"bdb-recover", no_argument, 0, (int) OPT_BDB_RECOVER},
+ {"bdb-no-recover", no_argument, 0, (int) OPT_BDB_NO_RECOVER},
{"bdb-no-sync", no_argument, 0, (int) OPT_BDB_NOSYNC},
{"bdb-shared-data", no_argument, 0, (int) OPT_BDB_SHARED},
{"bdb-tmpdir", required_argument, 0, (int) OPT_BDB_TMP},
@@ -2540,6 +2543,8 @@ CHANGEABLE_VAR changeable_vars[] = {
NET_READ_TIMEOUT, 1, 65535, 0, 1 },
{ "net_write_timeout", (long*) &net_write_timeout,
NET_WRITE_TIMEOUT, 1, 65535, 0, 1 },
+ { "open_files_limit", (long*) &open_files_limit,
+ 0, 0, 65535, 0, 1},
{ "query_buffer_size", (long*) &query_buff_size,
0, MALLOC_OVERHEAD, (long) ~0, MALLOC_OVERHEAD, IO_SIZE },
{ "record_buffer", (long*) &my_default_record_cache_size,
@@ -2620,6 +2625,7 @@ struct show_var_st init_vars[]= {
{"net_read_timeout", (char*) &net_read_timeout, SHOW_LONG},
{"net_retry_count", (char*) &mysqld_net_retry_count, SHOW_LONG},
{"net_write_timeout", (char*) &net_write_timeout, SHOW_LONG},
+ {"open_files_limit", (char*) &open_files_limit, SHOW_LONG},
{"pid_file", (char*) pidfile_name, SHOW_CHAR},
{"port", (char*) &mysql_port, SHOW_INT},
{"protocol_version", (char*) &protocol_version, SHOW_INT},
@@ -2821,7 +2827,7 @@ static void usage(void)
(DEFAULT, OLDEST, RANDOM or YOUNGEST, # sec)\n\
--bdb-logdir=directory Berkeley DB log file directory\n\
--bdb-no-sync Don't synchronously flush logs\n\
- --bdb-recover Start Berkeley DB in recover mode\n\
+ --bdb-no-recover Don't try to recover Berkeley DB tables on start\n\
--bdb-shared-data Start Berkeley DB in multi-process mode\n\
--bdb-tmpdir=directory Berkeley DB tempfile name\n\
--skip-bdb Don't use berkeley db (will save memory)\n\
@@ -3310,10 +3316,10 @@ static void get_options(int argc,char **argv)
berkeley_home=optarg;
break;
case OPT_BDB_NOSYNC:
- berkeley_init_flags|=DB_TXN_NOSYNC;
+ berkeley_env_flags|=DB_TXN_NOSYNC;
break;
- case OPT_BDB_RECOVER:
- berkeley_init_flags|=DB_RECOVER;
+ case OPT_BDB_NO_RECOVER:
+ berkeley_init_flags&= ~(DB_RECOVER);
break;
case OPT_BDB_TMP:
berkeley_tmpdir=optarg;
diff --git a/sql/sql_insert.cc b/sql/sql_insert.cc
index c10e2a205b8..bc67a7f261f 100644
--- a/sql/sql_insert.cc
+++ b/sql/sql_insert.cc
@@ -190,6 +190,8 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields,
error=0;
id=0;
thd->proc_info="update";
+ if (duplic == DUP_IGNORE || duplic == DUP_REPLACE)
+ table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
while ((values = its++))
{
if (fields.elements || !value_count)
@@ -281,6 +283,8 @@ int mysql_insert(THD *thd,TABLE_LIST *table_list, List<Item> &fields,
table->next_number_field=0;
thd->count_cuted_fields=0;
thd->next_insert_id=0; // Reset this if wrongly used
+ if (duplic == DUP_IGNORE || duplic == DUP_REPLACE)
+ table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
if (error)
goto abort;
@@ -1057,6 +1061,7 @@ bool delayed_insert::handle_inserts(void)
{
int error;
uint max_rows;
+ bool using_ignore=0;
DBUG_ENTER("handle_inserts");
/* Allow client to insert new rows */
@@ -1097,6 +1102,12 @@ bool delayed_insert::handle_inserts(void)
table->time_stamp=row->time_stamp;
info.handle_duplicates= row->dup;
+ if (info.handle_duplicates == DUP_IGNORE ||
+ info.handle_duplicates == DUP_REPLACE)
+ {
+ table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
+ using_ignore=1;
+ }
thd.net.last_errno = 0; // reset error for binlog
if (write_record(table,&info))
{
@@ -1106,6 +1117,11 @@ bool delayed_insert::handle_inserts(void)
pthread_mutex_unlock(&LOCK_delayed_status);
row->log_query = 0;
}
+ if (using_ignore)
+ {
+ using_ignore=0;
+ table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
+ }
if (row->query && row->log_query)
{
mysql_update_log.write(&thd,row->query, row->query_length);
@@ -1193,6 +1209,9 @@ select_insert::prepare(List<Item> &values)
thd->cuted_fields=0;
if (info.handle_duplicates != DUP_REPLACE)
table->file->extra(HA_EXTRA_WRITE_CACHE);
+ if (info.handle_duplicates == DUP_IGNORE ||
+ info.handle_duplicates == DUP_REPLACE)
+ table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
table->file->deactivate_non_unique_index((ha_rows) 0);
DBUG_RETURN(0);
}
@@ -1204,6 +1223,7 @@ select_insert::~select_insert()
if (save_time_stamp)
table->time_stamp=save_time_stamp;
table->next_number_field=0;
+ table->file->extra(HA_EXTRA_RESET);
}
thd->count_cuted_fields=0;
}
@@ -1246,6 +1266,7 @@ bool select_insert::send_eof()
int error,error2;
if (!(error=table->file->extra(HA_EXTRA_NO_CACHE)))
error=table->file->activate_all_index(thd);
+ table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
if ((error2=ha_autocommit_or_rollback(thd,error)) && ! error)
error=error2;
@@ -1307,6 +1328,9 @@ select_create::prepare(List<Item> &values)
restore_record(table,2); // Get empty record
thd->count_cuted_fields=1; // count warnings
thd->cuted_fields=0;
+ if (info.handle_duplicates == DUP_IGNORE ||
+ info.handle_duplicates == DUP_REPLACE)
+ table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
DBUG_RETURN(0);
}
@@ -1339,6 +1363,7 @@ bool select_create::send_eof()
abort();
else
{
+ table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
VOID(pthread_mutex_lock(&LOCK_open));
mysql_unlock_tables(thd, lock);
if (!table->tmp_table)
@@ -1359,6 +1384,7 @@ void select_create::abort()
}
if (table)
{
+ table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
enum db_type table_type=table->db_type;
if (!table->tmp_table)
hash_delete(&open_cache,(byte*) table);
diff --git a/sql/sql_load.cc b/sql/sql_load.cc
index b73f6893225..17f94e88b9b 100644
--- a/sql/sql_load.cc
+++ b/sql/sql_load.cc
@@ -214,6 +214,9 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
table->time_stamp=0;
table->next_number_field=table->found_next_number_field;
VOID(table->file->extra(HA_EXTRA_WRITE_CACHE));
+ if (handle_duplicates == DUP_IGNORE ||
+ handle_duplicates == DUP_REPLACE)
+ table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
table->file->deactivate_non_unique_index((ha_rows) 0);
table->copy_blobs=1;
if (!field_term->length() && !enclosed->length())
@@ -223,7 +226,7 @@ int mysql_load(THD *thd,sql_exchange *ex,TABLE_LIST *table_list,
if (table->file->extra(HA_EXTRA_NO_CACHE) ||
table->file->activate_all_index(thd))
error=1; /* purecov: inspected */
-
+ table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
table->time_stamp=save_time_stamp;
table->next_number_field=0;
if (thd->lock)
diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc
index 30b45cb18df..85ef7d24d67 100644
--- a/sql/sql_parse.cc
+++ b/sql/sql_parse.cc
@@ -73,14 +73,15 @@ static void init_signals(void)
static inline bool end_active_trans(THD *thd)
{
+ int error=0;
if (thd->options & (OPTION_NOT_AUTO_COMMIT | OPTION_BEGIN))
{
thd->options&= ~(ulong) (OPTION_BEGIN | OPTION_STATUS_NO_TRANS_UPDATE);
thd->server_status&= ~SERVER_STATUS_IN_TRANS;
if (ha_commit(thd))
- return 1;
+ error=1;
}
- return 0;
+ return error;
}
diff --git a/sql/sql_show.cc b/sql/sql_show.cc
index 06e81bd58de..1d4bdffeb61 100644
--- a/sql/sql_show.cc
+++ b/sql/sql_show.cc
@@ -889,6 +889,12 @@ store_create_info(THD *thd, TABLE *table, String *packet)
packet->append(" CHECKSUM=1", 11);
if (table->db_create_options & HA_OPTION_DELAY_KEY_WRITE)
packet->append(" DELAY_KEY_WRITE=1",18);
+ if (table->comment && table->comment[0])
+ {
+ packet->append(" COMMENT='", 10);
+ append_unescaped(packet, table->comment);
+ packet->append('\'');
+ }
if (file->raid_type)
{
char buff[100];
@@ -896,13 +902,6 @@ store_create_info(THD *thd, TABLE *table, String *packet)
my_raid_type(file->raid_type), file->raid_chunks, file->raid_chunksize/RAID_BLOCK_SIZE);
packet->append(buff);
}
- if(table->comment)
- {
- packet->append(" COMMENT='", 10);
- append_unescaped(packet, table->comment);
- packet->append('\'');
- }
-
DBUG_RETURN(0);
}
diff --git a/sql/sql_table.cc b/sql/sql_table.cc
index 778a60859b2..332537cad4e 100644
--- a/sql/sql_table.cc
+++ b/sql/sql_table.cc
@@ -1658,7 +1658,8 @@ copy_data_between_tables(TABLE *from,TABLE *to,
};
init_read_record(&info, thd, from, (SQL_SELECT *) 0, 1,1);
-
+ if (handle_duplicates == DUP_IGNORE)
+ to->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
next_field=to->next_number_field;
while (!(error=info.read_record(&info)))
{
@@ -1694,6 +1695,7 @@ copy_data_between_tables(TABLE *from,TABLE *to,
to->file->print_error(tmp_error,MYF(0));
error=1;
}
+ to->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY);
if (to->file->activate_all_index(thd))
error=1;
diff --git a/sql/sql_update.cc b/sql/sql_update.cc
index be5229b2ea4..b7b9b23d79d 100644
--- a/sql/sql_update.cc
+++ b/sql/sql_update.cc
@@ -210,6 +210,8 @@ int mysql_update(THD *thd,TABLE_LIST *table_list,List<Item> &fields,
if (!(test_flags & TEST_READCHECK)) /* For debugging */
VOID(table->file->extra(HA_EXTRA_NO_READCHECK));
+ if (handle_duplicates == DUP_IGNORE)
+ table->file->extra(HA_EXTRA_IGNORE_DUP_KEY);
init_read_record(&info,thd,table,select,0,1);
ha_rows updated=0L,found=0L;
@@ -250,6 +252,7 @@ int mysql_update(THD *thd,TABLE_LIST *table_list,List<Item> &fields,
end_read_record(&info);
thd->proc_info="end";
VOID(table->file->extra(HA_EXTRA_READCHECK));
+ VOID(table->file->extra(HA_EXTRA_NO_IGNORE_DUP_KEY));
table->time_stamp=save_time_stamp; // Restore auto timestamp pointer
using_transactions=table->file->has_transactions();
if (updated && (error <= 0 || !using_transactions))
diff --git a/support-files/binary-configure.sh b/support-files/binary-configure.sh
index c67d2ba2827..682ea570b25 100644
--- a/support-files/binary-configure.sh
+++ b/support-files/binary-configure.sh
@@ -6,6 +6,14 @@ then
exit 1;
fi
+echo "NOTE: This is a MySQL binary distribution. It's ready to run, you don't"
+echo "need to configure it!"
+echo ""
+echo "To help you a bit, I am now going to create the needed MySQL databases"
+echo "and start the MySQL server for you. If you run into any trouble, please"
+echo "consult the MySQL manual, that you can find in the Docs directory."
+echo ""
+
./scripts/mysql_install_db
if [ $? = 0 ]
then