1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00
This commit is contained in:
monty@work.mysql.com
2001-07-18 23:58:10 +02:00
70 changed files with 1289 additions and 435 deletions

View File

@ -2758,8 +2758,8 @@ entity relationship diagram (ERD).
@subheading Web Servers with @strong{MySQL} Tools @subheading Web Servers with @strong{MySQL} Tools
@table @asis @table @asis
@item @uref{http://bourbon.netvision.net.il/mysql/mod_auth_mysql/} @item @uref{ftp://ftp.kcilink.com/pub/}
An Apache authentication module. mod_auth_mysql, An Apache authentication module.
@item @uref{http://www.roxen.com/} @item @uref{http://www.roxen.com/}
The Roxen Challenger Web server. The Roxen Challenger Web server.
@ -3170,6 +3170,10 @@ unsubscribe from the @code{myodbc} list, send a message to
@email{myodbc-subscribe@@lists.mysql.com} or @email{myodbc-subscribe@@lists.mysql.com} or
@email{myodbc-unsubscribe@@lists.mysql.com}. @email{myodbc-unsubscribe@@lists.mysql.com}.
If you can't get an answer for your questions from the mailing list, one
option is to pay for support from @strong{MySQL AB}, which will put you
in direct contact with @strong{MySQL} developers. @xref{Support}.
The following table shows some @strong{MySQL} mailing in other languages than The following table shows some @strong{MySQL} mailing in other languages than
English. Note that these are not operated by @strong{MySQL AB}, so we can't English. Note that these are not operated by @strong{MySQL AB}, so we can't
guarantee the quality on these. guarantee the quality on these.
@ -3599,12 +3603,15 @@ A license is required if:
@itemize @minus @itemize @minus
@item @item
You link a part of the of @strong{MySQL} that has a GPL Copyright to a You link a program, that is not free software, with code from the
program that is not free software (embedded usage of the @strong{MySQL} @strong{MySQL} server or clients that has the GPL copyright. This
server). In this case your application would also become GPL through the happens for example when you use @strong{MySQL} as an embedded server
clause in the GPL license that acts as a virus. By licensing @strong{MySQL} in your applications or when you add not free extensions to the
from us under a commercial license you will avoid this problem. @strong{MySQL} server. In this case your application/code would also
become GPL through the GPL license that acts as a virus. By licensing
@strong{MySQL} server from @strong{MySQL AB} under a commercial
license you will avoid this problem.
See @uref{http://www.gnu.org/copyleft/gpl-faq.html}.
@item @item
You have a commercial application that ONLY works with @strong{MySQL} You have a commercial application that ONLY works with @strong{MySQL}
and ships the application with the @strong{MySQL} server. This is and ships the application with the @strong{MySQL} server. This is
@ -6563,8 +6570,8 @@ shell> make
A collection of our standard configure scripts is located in the A collection of our standard configure scripts is located in the
@file{BUILD/} subdirectory. If you are lazy, you can use @file{BUILD/} subdirectory. If you are lazy, you can use
@file{BUILD/compile-pentium-debug}. It will actually work on a lot of @file{BUILD/compile-pentium-debug}. To compile on a different architecture,
non-x86 machines despite its name. modify the script removing flags that are Pentium-specific.
@item @item
When the build is done, run @code{make install}. Be careful with this When the build is done, run @code{make install}. Be careful with this
@ -7608,7 +7615,7 @@ You should also add /etc/my.cnf:
open_files_limit=8192 open_files_limit=8192
@end example @end example
The above should allow @strong{MySQL} to create up to 8192 connections + files. The above should allow @strong{MySQL} to create up to 8192 connections/files.
The @code{STACK_SIZE} constant in LinuxThreads controls the spacing of thread The @code{STACK_SIZE} constant in LinuxThreads controls the spacing of thread
stacks in the address space. It needs to be large enough so that there will stacks in the address space. It needs to be large enough so that there will
@ -19305,7 +19312,7 @@ key that can have @code{NULL} values (In this case the packed key length will
be stored in the same byte that is used to mark if a key is @code{NULL}.) be stored in the same byte that is used to mark if a key is @code{NULL}.)
@item @item
If you specify a @code{SELECT} after the @code{CREATE STATEMENT}, If you specify a @code{SELECT} after the @code{CREATE} statement,
@strong{MySQL} will create new fields for all elements in the @strong{MySQL} will create new fields for all elements in the
@code{SELECT}. For example: @code{SELECT}. For example:
@ -19315,9 +19322,37 @@ mysql> CREATE TABLE test (a int not null auto_increment,
TYPE=MyISAM SELECT b,c from test2; TYPE=MyISAM SELECT b,c from test2;
@end example @end example
This will create a @code{MyISAM} table with 3 columns. Note that the This will create a @code{MyISAM} table with three columns, a, b, and c.
table will automatically be deleted if any errors occur while copying Notice that the columns from the @code{SELECT} statement are appended to
data into the table. the right side of the table, not overlapped onto it. Take the following
example:
@example
mysql> select * from foo;
+---+
| n |
+---+
| 1 |
+---+
mysql> create table bar (m int) select n from foo;
Query OK, 1 row affected (0.02 sec)
Records: 1 Duplicates: 0 Warnings: 0
mysql> select * from bar;
+------+---+
| m | n |
+------+---+
| NULL | 1 |
+------+---+
1 row in set (0.00 sec)
@end example
For each row in table @code{foo}, a row is inserted in @code{bar} with
the values from @code{foo} and default values for the new columns.
If any errors occur while copying the data to the table, it will
automatically be deleted.
To ensure that the update log/binary log can be used to re-create the To ensure that the update log/binary log can be used to re-create the
original tables, @strong{MySQL} will not allow concurrent inserts during original tables, @strong{MySQL} will not allow concurrent inserts during
@ -19875,6 +19910,28 @@ still get strange errors from a table when @strong{MySQL} tries to
update a row or find a row by key (this is VERY unlikely to happen if a update a row or find a row by key (this is VERY unlikely to happen if a
normal check has succeeded!). normal check has succeeded!).
Some things reported by check table, can't be corrected automaticly:
@itemize @bullet
@item
@code{Found row where the auto_increment column has the value 0}.
This means that you have in the table a row where the
@code{auto_increment} index column contains the value 0.
(It's possible to create a row where the auto_increment column is 0 by
explicitely setting the column to 0 with an @code{UPDATE} statement)
This isn't an error in itself, but could cause trouble if you decide to
dump the table and restore it or do an @code{ALTER TABLE} on the
table. In this case the auto_increment column will change value,
according to the rules of auto_increment columns, which could cause
problems like a duplicate key error.
To get rid of the warning, just execute an @code{UPDATE} statement
to set the column to some other value than 0.
@end itemize
@findex BACKUP TABLE @findex BACKUP TABLE
@node BACKUP TABLE, RESTORE TABLE, CHECK TABLE, Reference @node BACKUP TABLE, RESTORE TABLE, CHECK TABLE, Reference
@section @code{BACKUP TABLE} Syntax @section @code{BACKUP TABLE} Syntax
@ -20534,8 +20591,6 @@ or INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
or INSERT [LOW_PRIORITY | DELAYED] [IGNORE] or INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
[INTO] tbl_name [INTO] tbl_name
SET col_name=expression, col_name=expression, ... SET col_name=expression, col_name=expression, ...
or INSERT [LOW_PRIORITY] [IGNORE] [INTO] tbl_name
SELECT ...
@end example @end example
@ -21478,7 +21533,8 @@ If you have specified the update log file or a binary log file without
an extension, the extension number of the log file will be incremented an extension, the extension number of the log file will be incremented
by one relative to the previous file. If you have used an extension in by one relative to the previous file. If you have used an extension in
the file name, @strong{MySQL} will close and reopen the update log file. the file name, @strong{MySQL} will close and reopen the update log file.
@xref{Update log}. @xref{Update log}. This is the same thing as sending the @code{SIGHUP}
signal to the @code{mysqld} server.
@item @code{PRIVILEGES} @tab Reloads the privileges from the grant tables in @item @code{PRIVILEGES} @tab Reloads the privileges from the grant tables in
the @code{mysql} database. the @code{mysql} database.
@ -21489,13 +21545,16 @@ the @code{mysql} database.
@item @code{TABLES WITH READ LOCK} @tab Closes all open tables and locks all tables for all databases with a read until one executes @code{UNLOCK TABLES}. This is very convenient way to get backups if you have a file system, like Veritas,that can take snapshots in time. @item @code{TABLES WITH READ LOCK} @tab Closes all open tables and locks all tables for all databases with a read until one executes @code{UNLOCK TABLES}. This is very convenient way to get backups if you have a file system, like Veritas,that can take snapshots in time.
@item @code{STATUS} @tab Resets most status variables to zero. @item @code{STATUS} @tab Resets most status variables to zero. This is something one should only use when debugging a query.
@end multitable @end multitable
You can also access each of the commands shown above with the @code{mysqladmin} You can also access each of the commands shown above with the @code{mysqladmin}
utility, using the @code{flush-hosts}, @code{flush-logs}, @code{reload}, utility, using the @code{flush-hosts}, @code{flush-logs}, @code{reload},
or @code{flush-tables} commands. or @code{flush-tables} commands.
Take also a look at the @code{RESET} command used with
replication. @xref{Replication SQL}.
@cindex @code{mysqladmin} @cindex @code{mysqladmin}
@findex KILL @findex KILL
@node KILL, SHOW, FLUSH, Reference @node KILL, SHOW, FLUSH, Reference
@ -22314,7 +22373,7 @@ is automatically enlarged, up to @code{max_allowed_packet} bytes.)
@item @code{net_read_timeout} @item @code{net_read_timeout}
Number of seconds to wait for more data from a connection before aborting Number of seconds to wait for more data from a connection before aborting
the read. Note that when we don't expect data from a connection, the timeout the read. Note that when we don't expect data from a connection, the timeout
is defined by @code{write_timeout}. is defined by @code{write_timeout}. See also @code{slave_read_timeout}.
@item @code{net_retry_count} @item @code{net_retry_count}
If a read on a communication port is interrupted, retry this many times If a read on a communication port is interrupted, retry this many times
@ -22372,6 +22431,10 @@ the @code{PROCESS_PRIV} privilege. This can improve security if you're
concerned about people being able to see what databases other users concerned about people being able to see what databases other users
have. See also @code{safe_show_databases}. have. See also @code{safe_show_databases}.
@item @code{slave_read_timeout}
Number of seconds to wait for more data from a master/slave connection
before aborting the read.
@item @code{slow_launch_time} @item @code{slow_launch_time}
If creating the thread takes longer than this value (in seconds), the If creating the thread takes longer than this value (in seconds), the
@code{Slow_launch_threads} counter will be incremented. @code{Slow_launch_threads} counter will be incremented.
@ -23211,7 +23274,8 @@ for replication of tables with fancy column names to work.
@item TIMESTAMP = timestamp_value | DEFAULT @item TIMESTAMP = timestamp_value | DEFAULT
Set the time for this client. This is used to get the original timestamp if Set the time for this client. This is used to get the original timestamp if
you use the update log to restore rows. you use the update log to restore rows. @code{timestamp_value} should be a
UNIX Epoch timestamp, not a @strong{MySQL} timestamp.
@item LAST_INSERT_ID = # @item LAST_INSERT_ID = #
Set the value to be returned from @code{LAST_INSERT_ID()}. This is stored in Set the value to be returned from @code{LAST_INSERT_ID()}. This is stored in
@ -24773,7 +24837,7 @@ The meanings of the configuration parameters are the following:
@multitable @columnfractions .30 .70 @multitable @columnfractions .30 .70
@item @code{innodb_data_home_dir} @tab @item @code{innodb_data_home_dir} @tab
The common part of the directory path for all innobase data files. The common part of the directory path for all InnoDB data files.
@item @code{innodb_data_file_path} @tab @item @code{innodb_data_file_path} @tab
Paths to individual data files and their sizes. The full directory path Paths to individual data files and their sizes. The full directory path
to each data file is acquired by concatenating innodb_data_home_dir to to each data file is acquired by concatenating innodb_data_home_dir to
@ -30209,14 +30273,14 @@ The following table has the options you can use for the @strong{MASTER}:
@item @strong{Option} @tab @strong{Description} @item @strong{Option} @tab @strong{Description}
@item @code{log-bin=filename} @tab @item @code{log-bin=filename} @tab
Write to a binary update log to the specified location. Note that if you Write to a binary update log to the specified location. Note that if you
give it a parameter with an extension give it a parameter with an extension (for example,
(for example, @code{log-bin=/mysql/logs/replication.log} ) versions up to 3.23.24 @code{log-bin=/mysql/logs/replication.log} ) versions up to 3.23.24 will
will not work right during replication if you do @code{FLUSH LOGS} . The not work right during replication if you do @code{FLUSH LOGS} . The
problem is fixed in Version 3.23.25. If you are using this kind of log name, problem is fixed in Version 3.23.25. If you are using this kind of log
@code{FLUSH LOGS} will be ignored on binlog. To clear the log, run name, @code{FLUSH LOGS} will be ignored on binlog. To clear the log, run
@code{FLUSH MASTER}, and do not forget to run @code{FLUSH SLAVE} on all @code{FLUSH MASTER}, and do not forget to run @code{FLUSH SLAVE} on all
slaves. In Version 3.23.26 and in later versions you should use @code{RESET MASTER} slaves. In Version 3.23.26 and in later versions you should use
and @code{RESET SLAVE} @code{RESET MASTER} and @code{RESET SLAVE}
@item @code{log-bin-index=filename} @tab @item @code{log-bin-index=filename} @tab
Because the user could issue the @code{FLUSH LOGS} command, we need to Because the user could issue the @code{FLUSH LOGS} command, we need to
@ -30307,7 +30371,6 @@ times, once for each table.(Example:
@code{replicate-ignore-table=foo%.bar%} - will not upates to tables in all databases that start with foo and whose table names @code{replicate-ignore-table=foo%.bar%} - will not upates to tables in all databases that start with foo and whose table names
start with bar) start with bar)
@item @code{replicate-ignore-db=database_name} @tab @item @code{replicate-ignore-db=database_name} @tab
Tells the slave thread to not replicate to the specified database. To Tells the slave thread to not replicate to the specified database. To
specify more than one database to ignore, use the directive multiple specify more than one database to ignore, use the directive multiple
@ -30328,7 +30391,6 @@ you have 3.23.28 or later, and use
@code{replicate-wild-do-table=db_name.%} @code{replicate-wild-do-table=db_name.%}
(Example: @code{replicate-do-db=some_db}) (Example: @code{replicate-do-db=some_db})
@item @code{log-slave-updates} @tab @item @code{log-slave-updates} @tab
Tells the slave to log the updates from the slave thread to the binary Tells the slave to log the updates from the slave thread to the binary
log. Off by default. You will need to turn it on if you plan to log. Off by default. You will need to turn it on if you plan to
@ -30341,6 +30403,10 @@ Updates to a database with a different name than the original (Example:
@item @code{skip-slave-start} @tab @item @code{skip-slave-start} @tab
Tells the slave server not to start the slave on the startup. The user Tells the slave server not to start the slave on the startup. The user
can start it later with @code{SLAVE START}. can start it later with @code{SLAVE START}.
@item @code{slave_read_timeout=#}
Number of seconds to wait for more data from the master before aborting
the read.
@end multitable @end multitable
@cindex SQL commands, replication @cindex SQL commands, replication
@ -30746,8 +30812,11 @@ query from the master.
@item @item
If you have decided you can skip the next query, do If you have decided you can skip the next query, do
@code{SET SQL_SLAVE_SKIP_COUNTER=1; SLAVE START;} to skip a query that @code{SET SQL_SLAVE_SKIP_COUNTER=1; SLAVE START;} to skip a query that
does not use auto_increment, last_insert_id or timestamp, or does not use auto_increment, or last_insert_id or
@code{SET SQL_SLAVE_SKIP_COUNTER=2; SLAVE START;} otherwise @code{SET SQL_SLAVE_SKIP_COUNTER=2; SLAVE START;} otherwise. The reason
auto_increment/last_insert_id queries are different is that they take
two events in the binary log of the master.
@item @item
If you are sure the slave started out perfectly in sync with the master, If you are sure the slave started out perfectly in sync with the master,
and no one has updated the tables involved outside of slave thread, and no one has updated the tables involved outside of slave thread,
@ -31664,7 +31733,8 @@ method for changing the limit varies widely from system to system.
@code{table_cache} is related to @code{max_connections}. For example, @code{table_cache} is related to @code{max_connections}. For example,
for 200 concurrent running connections, you should have a table cache of for 200 concurrent running connections, you should have a table cache of
at least @code{200 * n}, where @code{n} is the maximum number of tables at least @code{200 * n}, where @code{n} is the maximum number of tables
in a join. in a join. You also need to reserve some extra file descriptors for
temporary tables and files.
The cache of open tables can grow to a maximum of @code{table_cache} The cache of open tables can grow to a maximum of @code{table_cache}
(default 64; this can be changed with the @code{-O table_cache=#} (default 64; this can be changed with the @code{-O table_cache=#}
@ -46663,6 +46733,28 @@ not yet 100% confident in this code.
Added option @code{--warnings} to @code{mysqld}. Now @code{mysqld} Added option @code{--warnings} to @code{mysqld}. Now @code{mysqld}
only prints the error @code{Aborted connection} if this option is used. only prints the error @code{Aborted connection} if this option is used.
@item @item
Fixed problem with @code{--low-priority-updates} and @code{INSERT}'s.
@item
Fixed bug in slave thread when under some rare circumstances it could
get 22 bytes ahead on the offset in the master
@item
Added @code{slave_wait_timeout} for replication.
@item
Fixed problem with @code{UPDATE} and BDB tables.
@item
Fixed hard bug in BDB tables when using key parts.
@item
Fixed problem when using the @code{GRANT FILE ON database.* ...}; Previously
we added the @code{DROP} privilege for the database.
@item
Fixed that @code{DELETE FROM table_name ... LIMIT 0} and
@code{UPDATE FROM table_name ... LIMIT 0} doesn't delete/update anything.
@item
@code{CHECK TABLE} now checks if an auto_increment column contains the value 0.
@item
Sending a @code{SIGHUP} to @code{mysqld} will now only flush the logs,
not reset the replication.
@item
Fixed parser to allow floats of type @code{1.0e1} (no sign after @code{e}). Fixed parser to allow floats of type @code{1.0e1} (no sign after @code{e}).
@item @item
Option @code{--force} to @code{myisamchk} now also updates states. Option @code{--force} to @code{myisamchk} now also updates states.
@ -46684,6 +46776,9 @@ Fixed bug in @code{BDB} tables when querying empty tables.
@item @item
Fixed a bug when using @code{COUNT(DISTINCT)} with @code{LEFT JOIN} and Fixed a bug when using @code{COUNT(DISTINCT)} with @code{LEFT JOIN} and
there wasn't any matching rows. there wasn't any matching rows.
@item
Removed all documentation referring to the @code{GEMINI} table
type. @code{GEMINI} is not released under an Open Source license.
@end itemize @end itemize
@node News-3.23.39, News-3.23.38, News-3.23.40, News-3.23.x @node News-3.23.39, News-3.23.38, News-3.23.40, News-3.23.x
@ -51730,16 +51825,20 @@ Don't execute @code{ALTER TABLE} on a @code{BDB} table on which you are
running not completed multi-statement transactions. (The transaction running not completed multi-statement transactions. (The transaction
will probably be ignored). will probably be ignored).
@item
@code{ANALYZE TABLE}, @code{OPTIMIZE TABLE} and @code{REPAIR TABLE} may
cause problems on tables for which you are using @code{INSERT DELAYED}.
@item @item
Doing a @code{LOCK TABLE ..} and @code{FLUSH TABLES ..} doesn't Doing a @code{LOCK TABLE ..} and @code{FLUSH TABLES ..} doesn't
guarantee that there isn't a half-finished transaction in progress on the guarantee that there isn't a half-finished transaction in progress on the
table. table.
@item @item
BDB tables are a bit slow to open from this. If you have many BDB tables BDB tables are a bit slow to open. If you have many BDB tables in a
in a database, it will take a long time to use the @code{mysql} client database, it will take a long time to use the @code{mysql} client on the
on the database if you are not using the @code{-A} option or if you are database if you are not using the @code{-A} option or if you are using
using @code{rehash}. This is especially notable when you have a big table @code{rehash}. This is especially notable when you have a big table
cache. cache.
@item @item
@ -51894,6 +51993,8 @@ values in double. Using these will cause problems when trying to export
and import data. We should as an intermediate solution change @code{NaN} to and import data. We should as an intermediate solution change @code{NaN} to
@code{NULL} (if possible) and @code{-Inf} and @code{Inf} to the @code{NULL} (if possible) and @code{-Inf} and @code{Inf} to the
Minimum respective maximum possible @code{double} value. Minimum respective maximum possible @code{double} value.
@item
@code{LIMIT} on negative numbers are treated as big positive numbers.
@end itemize @end itemize
The following are known bugs in earlier versions of @strong{MySQL}: The following are known bugs in earlier versions of @strong{MySQL}:
@ -52108,6 +52209,9 @@ Add @code{PREPARE} of statements and sending of parameters to @code{mysqld}.
Make it possible to specify @code{long_query_time} with a granularity Make it possible to specify @code{long_query_time} with a granularity
in microseconds. in microseconds.
@item @item
Add a configurable prompt to the @code{mysql} command line client, with
options like database in use, time and date...
@item
Add range checking to @code{MERGE} tables. Add range checking to @code{MERGE} tables.
@item @item
Link the @code{myisampack} code into the server. Link the @code{myisampack} code into the server.

View File

@ -119,6 +119,7 @@ struct __db_dbt {
u_int32_t dlen; /* RO: get/put record length. */ u_int32_t dlen; /* RO: get/put record length. */
u_int32_t doff; /* RO: get/put record offset. */ u_int32_t doff; /* RO: get/put record offset. */
void *app_private; /* Application-private handle. */
#define DB_DBT_ISSET 0x001 /* Lower level calls set value. */ #define DB_DBT_ISSET 0x001 /* Lower level calls set value. */
#define DB_DBT_MALLOC 0x002 /* Return in malloc'd memory. */ #define DB_DBT_MALLOC 0x002 /* Return in malloc'd memory. */
#define DB_DBT_PARTIAL 0x004 /* Partial put/get. */ #define DB_DBT_PARTIAL 0x004 /* Partial put/get. */

View File

@ -629,7 +629,10 @@ struct request_info *req;
AC_MSG_RESULT(yes) AC_MSG_RESULT(yes)
AC_DEFINE(LIBWRAP) AC_DEFINE(LIBWRAP)
AC_DEFINE(HAVE_LIBWRAP) AC_DEFINE(HAVE_LIBWRAP)
WRAPLIBS="-L$with_libwrap/lib -lwrap", if test "$with_libwrap" != "yes"; then
WRAPLIBS="-L${with_libwrap}/lib"
fi
WRAPLIBS="${WRAPLIBS} -lwrap",
AC_MSG_RESULT(no) AC_MSG_RESULT(no)
CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}), CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}),
CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags}) CPPFLAGS=${_cppflags} LDFLAGS=${_ldflags})
@ -831,6 +834,12 @@ case $SYSTEM_TYPE in
echo "Adding fix for interrupted reads" echo "Adding fix for interrupted reads"
CXXFLAGS="$CXXFLAGS -DMYSQLD_NET_RETRY_COUNT=1000000" CXXFLAGS="$CXXFLAGS -DMYSQLD_NET_RETRY_COUNT=1000000"
;; ;;
*netbsd*)
echo "Adding flag -Dunix"
CFLAGS="$CFLAGS -Dunix"
CXXFLAGS="$CXXFLAGS -Dunix"
OVERRIDE_MT_LD_ADD="\$(top_srcdir)/mit-pthreads/obj/libpthread.a"
;;
*bsdi*) *bsdi*)
echo "Adding fix for BSDI" echo "Adding fix for BSDI"
CFLAGS="$CFLAGS -D__BSD__ -DHAVE_BROKEN_REALPATH" CFLAGS="$CFLAGS -D__BSD__ -DHAVE_BROKEN_REALPATH"
@ -1155,10 +1164,10 @@ if test "$ac_cv_lib_pthread_strtok_r" = "no"
then then
my_save_LIBS="$LIBS" my_save_LIBS="$LIBS"
AC_CHECK_LIB(c_r,strtok_r) AC_CHECK_LIB(c_r,strtok_r)
if test "$with_osf32_threads" = "yes" -o "$target_os" = "FreeBSD" -o "$target_os" = "freebsd" case "$with_osf32_threads---$target_os" in
then # Don't keep -lc_r in LIBS; -pthread handles it magically
LIBS="$my_save_LIBS" yes---* | *---freebsd* ) LIBS="$my_save_LIBS" ;;
fi esac
AC_CHECK_FUNCS(strtok_r pthread_init) AC_CHECK_FUNCS(strtok_r pthread_init)
else else
AC_CHECK_FUNCS(strtok_r) AC_CHECK_FUNCS(strtok_r)
@ -2058,7 +2067,7 @@ and GNU make work together causes some files to depend on this
header, even if we're not building with Berkeley DB. header, even if we're not building with Berkeley DB.
Obviously, if this file *is* used, it'll break and hopefully we can find Obviously, if this file *is* used, it'll break and hopefully we can find
out why this file was generated by $(top_srcdir)/configure instead of out why this file was generated by ${top_srcdir}/configure instead of
the real db.h. the real db.h.
If you run into some problems because of this file, please use mysql_bug If you run into some problems because of this file, please use mysql_bug
@ -2099,15 +2108,20 @@ EOF
AC_DEFINE(HAVE_mit_thread) AC_DEFINE(HAVE_mit_thread)
MT_INCLUDES="-I\$(top_srcdir)/mit-pthreads/include" MT_INCLUDES="-I\$(top_srcdir)/mit-pthreads/include"
AC_SUBST(MT_INCLUDES) AC_SUBST(MT_INCLUDES)
if test -n "$OVERRIDE_MT_LD_ADD"
then
MT_LD_ADD="$OVERRIDE_MT_LD_ADD"
else
MT_LD_ADD="-L \$(top_srcdir)/mit-pthreads/obj/ -lpthread" MT_LD_ADD="-L \$(top_srcdir)/mit-pthreads/obj/ -lpthread"
fi
AC_SUBST(MT_LD_ADD) AC_SUBST(MT_LD_ADD)
LIBS="$MT_LD_ADD $LIBS"
echo "" echo ""
echo "Configuring MIT Pthreads" echo "Configuring MIT Pthreads"
# We will never install so installation paths are not needed. # We will never install so installation paths are not needed.
(cd mit-pthreads; sh ./configure) (cd mit-pthreads; sh ./configure)
echo "End of MIT Pthreads configuration" echo "End of MIT Pthreads configuration"
echo "" echo ""
LIBS="$MT_LD_ADD $LIBS"
fi fi
fi fi
AC_SUBST(sql_server_dirs) AC_SUBST(sql_server_dirs)

View File

@ -65,6 +65,7 @@ enum thr_lock_type { TL_IGNORE=-1,
extern ulong max_write_lock_count; extern ulong max_write_lock_count;
extern my_bool thr_lock_inited; extern my_bool thr_lock_inited;
extern enum thr_lock_type thr_upgraded_concurrent_insert_lock;
typedef struct st_thr_lock_data { typedef struct st_thr_lock_data {
pthread_t thread; pthread_t thread;

View File

@ -177,7 +177,7 @@ time_t altzone = 0;
static int detzcode(const char * codep) static int detzcode(const char * codep)
{ {
long result; int result;
int i; int i;
result = 0; result = 0;

View File

@ -1,5 +1,7 @@
#include <sys/signal.h> #include <sys/signal.h>
__BEGIN_DECLS
#if NSIG <= 32 #if NSIG <= 32
#define __SIGEMPTYSET 0 #define __SIGEMPTYSET 0
#define __SIGFILLSET 0xffffffff #define __SIGFILLSET 0xffffffff
@ -8,6 +10,9 @@
#define __SIGISMEMBER(s, n) ((*(s) & (1 << ((n) - 1))) != 0) #define __SIGISMEMBER(s, n) ((*(s) & (1 << ((n) - 1))) != 0)
#else /* XXX Netbsd >= 1.3H */ #else /* XXX Netbsd >= 1.3H */
int sigaction __P_((int, const struct sigaction *, struct sigaction *)) __RENAME(__sigaction14);
#define __SIGEMPTYSET { 0, 0, 0, 0} #define __SIGEMPTYSET { 0, 0, 0, 0}
#define __SIGFILLSET { 0xffffffff, 0xffffffff, \ #define __SIGFILLSET { 0xffffffff, 0xffffffff, \
0xffffffff, 0xffffffff } 0xffffffff, 0xffffffff }
@ -18,3 +23,5 @@
#define __SIGISMEMBER(s, n) (((s)->__bits[__SIGWORD(n)] & __SIGMASK(n)) != 0) #define __SIGISMEMBER(s, n) (((s)->__bits[__SIGWORD(n)] & __SIGMASK(n)) != 0)
#endif #endif
__END_DECLS

View File

@ -36,13 +36,18 @@ static char sccsid[] = "@(#)strerror.c 5.6 (Berkeley) 5/4/91";
#endif /* LIBC_SCCS and not lint */ #endif /* LIBC_SCCS and not lint */
#include <string.h> #include <string.h>
#if defined(__NetBSD__)
#include <errno.h>
#endif
char * char *
strerror(num) strerror(num)
int num; int num;
{ {
#if !defined(__NetBSD__)
extern int sys_nerr; extern int sys_nerr;
extern char *sys_errlist[]; extern char *sys_errlist[];
#endif
#define UPREFIX "Unknown error: " #define UPREFIX "Unknown error: "
static char ebuf[40] = UPREFIX; /* 64-bit number + slop */ static char ebuf[40] = UPREFIX; /* 64-bit number + slop */
register unsigned int errnum; register unsigned int errnum;
@ -51,7 +56,7 @@ strerror(num)
errnum = num; /* convert to unsigned */ errnum = num; /* convert to unsigned */
if (errnum < sys_nerr) if (errnum < sys_nerr)
return(sys_errlist[errnum]); return((char *)sys_errlist[errnum]);
/* Do this by hand, so we don't include stdio(3). */ /* Do this by hand, so we don't include stdio(3). */
t = tmp; t = tmp;

View File

@ -434,9 +434,9 @@ int chk_key(MI_CHECK *param, register MI_INFO *info)
} }
else else
full_text_keys++; full_text_keys++;
/* Check that auto_increment key is bigger than max key value */
if ((uint) share->base.auto_key -1 == key) if ((uint) share->base.auto_key -1 == key)
{ {
/* Check that auto_increment key is bigger than max key value */
ulonglong save_auto_value=info->s->state.auto_increment; ulonglong save_auto_value=info->s->state.auto_increment;
info->s->state.auto_increment=0; info->s->state.auto_increment=0;
info->lastinx=key; info->lastinx=key;
@ -456,6 +456,20 @@ int chk_key(MI_CHECK *param, register MI_INFO *info)
} }
else else
info->s->state.auto_increment=save_auto_value; info->s->state.auto_increment=save_auto_value;
/* Check that there isn't a row with auto_increment = 0 in the table */
mi_extra(info,HA_EXTRA_KEYREAD);
bzero(info->lastkey,keyinfo->seg->length);
if (!mi_rkey(info, info->rec_buff, key, info->lastkey,
keyinfo->seg->length, HA_READ_KEY_EXACT))
{
/* Don't count this as a real warning, as myisamchk can't correct it */
uint save=param->warning_printed;
mi_check_print_warning(param,
"Found row where the auto_increment column has the value 0");
param->warning_printed=save;
}
mi_extra(info,HA_EXTRA_NO_KEYREAD);
} }
length=(my_off_t) isam_key_length(info,keyinfo)*keys + param->key_blocks*2; length=(my_off_t) isam_key_length(info,keyinfo)*keys + param->key_blocks*2;

View File

@ -206,7 +206,7 @@ static struct option long_options[] =
static void print_version(void) static void print_version(void)
{ {
printf("%s Ver 1.47 for %s at %s\n",my_progname,SYSTEM_TYPE, printf("%s Ver 1.48 for %s at %s\n",my_progname,SYSTEM_TYPE,
MACHINE_TYPE); MACHINE_TYPE);
} }

View File

@ -55,3 +55,8 @@ ordid ord
2 sdj 2 sdj
3 sdj 3 sdj
1 zzz 1 zzz
a
0
Table Op Msg_type Msg_text
test.t1 check warning Found row where the auto_increment column has the value 0
test.t1 check status OK

View File

@ -511,3 +511,14 @@ id id3
100 2 100 2
KINMU_DATE KINMU_DATE
KINMU_DATE KINMU_DATE
a b
1 1
1 2
a b a b
1 1 1 1
1 1 1 2
1 2 1 1
1 2 1 2
a b
1 1
1 2

View File

@ -20,3 +20,6 @@ a b
a b a b
2 2 2 2
3 4 3 4
i
2
1

View File

@ -4,3 +4,7 @@ Table Op Msg_type Msg_text
test.t1 check status OK test.t1 check status OK
Table Op Msg_type Msg_text Table Op Msg_type Msg_text
test.t2 check error Table 't2' was not locked with LOCK TABLES test.t2 check error Table 't2' was not locked with LOCK TABLES
n
4
n
1

View File

@ -0,0 +1,4 @@
n
1
2
3

View File

@ -1,7 +1,7 @@
n n
1 10
2 11
3 12
4 13
5 14
6 15

View File

@ -64,3 +64,14 @@ create table t1 (ordid int(8) not null auto_increment, ord varchar(50) not null
insert into t1 values (NULL,'sdj'),(NULL,'sdj'),(NULL,"abc"),(NULL,'abc'),(NULL,'zzz'),(NULL,'sdj'),(NULL,'abc'); insert into t1 values (NULL,'sdj'),(NULL,'sdj'),(NULL,"abc"),(NULL,'abc'),(NULL,'zzz'),(NULL,'sdj'),(NULL,'abc');
select * from t1; select * from t1;
drop table t1; drop table t1;
#
# Test of auto_increment columns when they are set to 0
#
create table t1 (a int not null primary key auto_increment);
insert into t1 values (0);
update t1 set a=0;
select * from t1;
check table t1;
drop table t1;

View File

@ -715,3 +715,18 @@ CREATE TABLE t2 ( SYAIN_NO char(5) NOT NULL default '',STR_DATE char(8) NOT NULL
select T1.KINMU_DATE from t1 T1 ,t2 T2 where T1.SYAIN_NO = '12345' and T1.KINMU_DATE = '200106' and T2.SYAIN_NO = T1.SYAIN_NO; select T1.KINMU_DATE from t1 T1 ,t2 T2 where T1.SYAIN_NO = '12345' and T1.KINMU_DATE = '200106' and T2.SYAIN_NO = T1.SYAIN_NO;
select T1.KINMU_DATE from t1 T1 ,t2 T2 where T1.SYAIN_NO = '12345' and T1.KINMU_DATE = '200106' and T2.SYAIN_NO = T1.SYAIN_NO; select T1.KINMU_DATE from t1 T1 ,t2 T2 where T1.SYAIN_NO = '12345' and T1.KINMU_DATE = '200106' and T2.SYAIN_NO = T1.SYAIN_NO;
DROP TABLE t1,t2; DROP TABLE t1,t2;
#
# Test problem with joining table to itself on a multi-part unique key
#
drop table if exists t;
create table t (a int(11) not null, b int(11) not null, unique (a,b)) type=bdb;
insert into t values (1,1), (1,2);
select * from t where a = 1;
select t1.*, t2.* from t t1, t t2 where t1.a = t2.a and t2.a = 1;
select * from t where a = 1;
drop table t;

View File

@ -17,3 +17,14 @@ select * from t1;
delete from t1 limit 1; delete from t1 limit 1;
select * from t1; select * from t1;
drop table t1; drop table t1;
create table t1 (i int);
insert into t1 (i) values(1);
insert into t1 (i) values(1);
insert into t1 (i) values(1);
delete from t1 limit 1;
update t1 set i=2 limit 1;
delete from t1 limit 0;
update t1 set i=3 limit 0;
select * from t1;
drop table t1;

View File

@ -53,3 +53,45 @@ lock tables t1 write;
check table t2; check table t2;
unlock tables; unlock tables;
drop table t1,t2; drop table t1,t2;
#test to see if select will get the lock ahead of low priority update
connect (locker,localhost,root,,);
connect (reader,localhost,root,,);
connect (writer,localhost,root,,);
connection locker;
create table t1(n int);
insert into t1 values (1);
lock tables t1 write;
connection writer;
send update low_priority t1 set n = 4;
connection reader;
--sleep 2
send select n from t1;
connection locker;
--sleep 2
unlock tables;
connection writer;
reap;
connection reader;
reap;
drop table t1;
connection locker;
create table t1(n int);
insert into t1 values (1);
lock tables t1 read;
connection writer;
send update low_priority t1 set n = 4;
connection reader;
--sleep 2
send select n from t1;
connection locker;
--sleep 2
unlock tables;
connection writer;
reap;
connection reader;
reap;
drop table t1;

View File

@ -0,0 +1,43 @@
# test case to make slave thread get ahead by 22 bytes
source include/master-slave.inc;
connection master;
# first, cause a duplicate key problem on the slave
create table t1(n int auto_increment primary key);
save_master_pos;
connection slave;
sync_with_master;
insert into t1 values (2);
connection master;
insert into t1 values(NULL);
insert into t1 values(NULL);
save_master_pos;
connection slave;
sleep 1; # there is no way around this sleep - we have to wait until
# the slave tries to run the query, fails and aborts slave thread
delete from t1 where n = 2;
slave start;
sync_with_master;
#now the buggy slave would be confused on the offset but it can replicate
#in order to make it break, we need to stop/start the slave one more time
slave stop;
connection master;
# to be able to really confuse the slave, we need some non-auto-increment
# events in the log
create table t2(n int);
drop table t2;
insert into t1 values(NULL);
save_master_pos;
connection slave;
slave start;
#now the truth comes out - if the slave is buggy, it will never sync because
#the slave thread is not able to read events
sync_with_master;
select * from t1;
#clean up
connection master;
drop table t1;
save_master_pos;
connection slave;
sync_with_master;

View File

@ -1,24 +1,33 @@
# test to see if replication can continue when master sporadically fails on # test to see if replication can continue when master sporadically fails on
# COM_BINLOG_DUMP and additionally limits the number of events per dump # COM_BINLOG_DUMP and additionally limits the number of events per dump
source include/master-slave.inc; source include/master-slave.inc;
connection master; connection master;
drop table if exists t1; drop table if exists t1,t2;
create table t2(n int);
create table t1(n int not null auto_increment primary key); create table t1(n int not null auto_increment primary key);
insert into t1 values (NULL),(NULL); insert into t1 values (NULL),(NULL);
truncate table t1; truncate table t1;
insert into t1 values (NULL),(NULL); # We have to use 4 in the following to make this test work with all table types
insert into t1 values (4),(NULL);
save_master_pos;
connection slave;
sync_with_master;
slave stop;
slave start;
connection master;
insert into t1 values (NULL),(NULL); insert into t1 values (NULL),(NULL);
flush logs; flush logs;
truncate table t1; truncate table t1;
insert into t1 values (NULL),(NULL); insert into t1 values (10),(NULL);
insert into t1 values (NULL),(NULL); insert into t1 values (NULL),(NULL)
insert into t1 values (NULL),(NULL); insert into t1 values (NULL),(NULL);
save_master_pos; save_master_pos;
connection slave; connection slave;
sync_with_master; sync_with_master;
select * from t1; select * from t1;
connection master; connection master;
drop table t1; drop table t1,t2;
save_master_pos; save_master_pos;
connection slave; connection slave;
sync_with_master; sync_with_master;

View File

@ -85,6 +85,7 @@ multiple read locks.
my_bool thr_lock_inited=0; my_bool thr_lock_inited=0;
ulong locks_immediate = 0L, locks_waited = 0L; ulong locks_immediate = 0L, locks_waited = 0L;
enum thr_lock_type thr_upgraded_concurrent_insert_lock = TL_WRITE;
/* The following constants are only for debug output */ /* The following constants are only for debug output */
#define MAX_THREADS 100 #define MAX_THREADS 100
@ -110,7 +111,8 @@ my_bool init_thr_lock()
} }
#ifdef EXTRA_DEBUG #ifdef EXTRA_DEBUG
static int found_errors=0; #define MAX_FOUND_ERRORS 10 /* Report 10 first errors */
static uint found_errors=0;
static int check_lock(struct st_lock_list *list, const char* lock_type, static int check_lock(struct st_lock_list *list, const char* lock_type,
const char *where, my_bool same_thread) const char *where, my_bool same_thread)
@ -167,15 +169,16 @@ static int check_lock(struct st_lock_list *list, const char* lock_type,
static void check_locks(THR_LOCK *lock, const char *where, static void check_locks(THR_LOCK *lock, const char *where,
my_bool allow_no_locks) my_bool allow_no_locks)
{ {
if (!found_errors) uint old_found_errors=found_errors;
if (found_errors < MAX_FOUND_ERRORS)
{ {
if (check_lock(&lock->write,"write",where,1) | if (check_lock(&lock->write,"write",where,1) |
check_lock(&lock->write_wait,"write_wait",where,0) | check_lock(&lock->write_wait,"write_wait",where,0) |
check_lock(&lock->read,"read",where,0) | check_lock(&lock->read,"read",where,0) |
check_lock(&lock->read_wait,"read_wait",where,0)) check_lock(&lock->read_wait,"read_wait",where,0))
found_errors=1; found_errors++;
if (!found_errors) if (found_errors < MAX_FOUND_ERRORS)
{ {
uint count=0; uint count=0;
THR_LOCK_DATA *data; THR_LOCK_DATA *data;
@ -186,7 +189,7 @@ static void check_locks(THR_LOCK *lock, const char *where,
} }
if (count != lock->read_no_write_count) if (count != lock->read_no_write_count)
{ {
found_errors=1; found_errors++;
fprintf(stderr, fprintf(stderr,
"Warning at '%s': Locks read_no_write_count was %u when it should have been %u\n", where, lock->read_no_write_count,count); "Warning at '%s': Locks read_no_write_count was %u when it should have been %u\n", where, lock->read_no_write_count,count);
} }
@ -196,7 +199,7 @@ static void check_locks(THR_LOCK *lock, const char *where,
if (!allow_no_locks && !lock->read.data && if (!allow_no_locks && !lock->read.data &&
(lock->write_wait.data || lock->read_wait.data)) (lock->write_wait.data || lock->read_wait.data))
{ {
found_errors=1; found_errors++;
fprintf(stderr, fprintf(stderr,
"Warning at '%s': No locks in use but locks are in wait queue\n", "Warning at '%s': No locks in use but locks are in wait queue\n",
where); where);
@ -205,7 +208,7 @@ static void check_locks(THR_LOCK *lock, const char *where,
{ {
if (!allow_no_locks && lock->read_wait.data) if (!allow_no_locks && lock->read_wait.data)
{ {
found_errors=1; found_errors++;
fprintf(stderr, fprintf(stderr,
"Warning at '%s': No write locks and waiting read locks\n", "Warning at '%s': No write locks and waiting read locks\n",
where); where);
@ -221,7 +224,7 @@ static void check_locks(THR_LOCK *lock, const char *where,
(lock->write_wait.data->type == TL_WRITE_DELAYED && (lock->write_wait.data->type == TL_WRITE_DELAYED &&
!lock->read.data))) !lock->read.data)))
{ {
found_errors=1; found_errors++;
fprintf(stderr, fprintf(stderr,
"Warning at '%s': Write lock %d waiting while no exclusive read locks\n",where,(int) lock->write_wait.data->type); "Warning at '%s': Write lock %d waiting while no exclusive read locks\n",where,(int) lock->write_wait.data->type);
} }
@ -235,7 +238,7 @@ static void check_locks(THR_LOCK *lock, const char *where,
lock->write.data->type == TL_WRITE_ALLOW_WRITE && lock->write.data->type == TL_WRITE_ALLOW_WRITE &&
lock->write_wait.data->type == TL_WRITE_ALLOW_WRITE) lock->write_wait.data->type == TL_WRITE_ALLOW_WRITE)
{ {
found_errors=1; found_errors++;
fprintf(stderr, fprintf(stderr,
"Warning at '%s': Found WRITE_ALLOW_WRITE lock waiting for WRITE_ALLOW_WRITE lock\n", "Warning at '%s': Found WRITE_ALLOW_WRITE lock waiting for WRITE_ALLOW_WRITE lock\n",
where); where);
@ -243,16 +246,18 @@ static void check_locks(THR_LOCK *lock, const char *where,
} }
if (lock->read.data) if (lock->read.data)
{ {
if ((!pthread_equal(lock->write.data->thread,lock->read.data->thread) && if ((!pthread_equal(lock->write.data->thread,
lock->write.data->type > TL_WRITE_DELAYED) || lock->read.data->thread) &&
lock->write.data->type > TL_WRITE_DELAYED &&
lock->write.data->type != TL_WRITE_ONLY) ||
((lock->write.data->type == TL_WRITE_CONCURRENT_INSERT || ((lock->write.data->type == TL_WRITE_CONCURRENT_INSERT ||
lock->write.data->type == TL_WRITE_ALLOW_WRITE) && lock->write.data->type == TL_WRITE_ALLOW_WRITE) &&
lock->read_no_write_count)) lock->read_no_write_count))
{ {
found_errors=1; found_errors++;
fprintf(stderr, fprintf(stderr,
"Warning at '%s': Found lock that is write and read locked\n", "Warning at '%s': Found lock of type %d that is write and read locked\n",
where); where, lock->write.data->type);
} }
} }
if (lock->read_wait.data) if (lock->read_wait.data)
@ -260,7 +265,7 @@ static void check_locks(THR_LOCK *lock, const char *where,
if (!allow_no_locks && lock->write.data->type <= TL_WRITE_DELAYED && if (!allow_no_locks && lock->write.data->type <= TL_WRITE_DELAYED &&
lock->read_wait.data->type <= TL_READ_HIGH_PRIORITY) lock->read_wait.data->type <= TL_READ_HIGH_PRIORITY)
{ {
found_errors=1; found_errors++;
fprintf(stderr, fprintf(stderr,
"Warning at '%s': Found read lock of type %d waiting for write lock of type %d\n", "Warning at '%s': Found read lock of type %d waiting for write lock of type %d\n",
where, where,
@ -270,7 +275,7 @@ static void check_locks(THR_LOCK *lock, const char *where,
} }
} }
} }
if (found_errors) if (found_errors != old_found_errors)
{ {
DBUG_PRINT("error",("Found wrong lock")); DBUG_PRINT("error",("Found wrong lock"));
} }
@ -510,7 +515,7 @@ int thr_lock(THR_LOCK_DATA *data,enum thr_lock_type lock_type)
} }
} }
else if (lock_type == TL_WRITE_CONCURRENT_INSERT && ! lock->check_status) else if (lock_type == TL_WRITE_CONCURRENT_INSERT && ! lock->check_status)
data->type=lock_type= TL_WRITE; /* not supported */ data->type=lock_type= thr_upgraded_concurrent_insert_lock;
if (lock->write.data) /* If there is a write lock */ if (lock->write.data) /* If there is a write lock */
{ {
@ -552,7 +557,7 @@ int thr_lock(THR_LOCK_DATA *data,enum thr_lock_type lock_type)
{ /* no scheduled write locks */ { /* no scheduled write locks */
if (lock_type == TL_WRITE_CONCURRENT_INSERT && if (lock_type == TL_WRITE_CONCURRENT_INSERT &&
(*lock->check_status)(data->status_param)) (*lock->check_status)(data->status_param))
data->type=lock_type=TL_WRITE; /* Upgrade lock */ data->type=lock_type= thr_upgraded_concurrent_insert_lock;
if (!lock->read.data || if (!lock->read.data ||
(lock_type <= TL_WRITE_DELAYED && (lock_type <= TL_WRITE_DELAYED &&
@ -939,10 +944,10 @@ my_bool thr_upgrade_write_delay_lock(THR_LOCK_DATA *data)
DBUG_ENTER("thr_upgrade_write_delay_lock"); DBUG_ENTER("thr_upgrade_write_delay_lock");
pthread_mutex_lock(&lock->mutex); pthread_mutex_lock(&lock->mutex);
if (data->type == TL_UNLOCK || data->type == TL_WRITE) /* Aborted */ if (data->type == TL_UNLOCK || data->type >= TL_WRITE_LOW_PRIORITY)
{ {
pthread_mutex_unlock(&lock->mutex); pthread_mutex_unlock(&lock->mutex);
DBUG_RETURN(data->type == TL_UNLOCK); DBUG_RETURN(data->type == TL_UNLOCK); /* Test if Aborted */
} }
check_locks(lock,"before upgrading lock",0); check_locks(lock,"before upgrading lock",0);
/* TODO: Upgrade to TL_WRITE_CONCURRENT_INSERT in some cases */ /* TODO: Upgrade to TL_WRITE_CONCURRENT_INSERT in some cases */

View File

@ -1,20 +1,20 @@
Testing server 'MySQL 3.23.36' at 2001-03-26 1:22:18 Testing server 'MySQL 3.23.39' at 2002-09-08 10:26:22
ATIS table test ATIS table test
Creating tables 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) Time for create_table (28): 0 wallclock secs ( 0.00 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting data Inserting data
Time to insert (9768): 4 wallclock secs ( 0.57 usr 0.65 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert (9768): 3 wallclock secs ( 0.51 usr 0.59 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Retrieving data Retrieving data
Time for select_simple_join (500): 1 wallclock secs ( 0.58 usr 0.37 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_simple_join (500): 2 wallclock secs ( 0.58 usr 0.37 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_join (100): 2 wallclock secs ( 0.44 usr 0.33 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_join (100): 2 wallclock secs ( 0.48 usr 0.33 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key_prefix_join (100): 11 wallclock secs ( 3.47 usr 2.55 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_key_prefix_join (100): 10 wallclock secs ( 3.45 usr 2.53 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_distinct (800): 10 wallclock secs ( 1.53 usr 0.98 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_distinct (800): 11 wallclock secs ( 1.54 usr 0.97 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_group (2800): 11 wallclock secs ( 1.44 usr 0.65 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_group (2800): 11 wallclock secs ( 1.48 usr 0.63 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Removing tables 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) Time to drop_table (28): 0 wallclock secs ( 0.00 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 39 wallclock secs ( 8.05 usr 5.53 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 39 wallclock secs ( 8.05 usr 5.44 sys + 0.00 cusr 0.00 csys = 0.00 CPU)

View File

@ -1,103 +1,104 @@
Benchmark DBD suite: 2.12 Benchmark DBD suite: 2.13
Date of test: 2001-03-26 1:22:18 Date of test: 2002-09-08 10:26:21
Running tests on: Linux 2.2.16-SMP alpha Running tests on: Linux 2.2.16-SMP alpha
Arguments: Arguments:
Comments: Alpha DS20 2x500 MHz, 2G memory, key_buffer=16M; cxx 6.3 + ccc 6.2.9 Comments: Alpha DS20 2x500 MHz, 2G memory, key_buffer=16M; cxx 6.3 + ccc 6.2.9
Limits from: Limits from:
Server version: MySQL 3.23.36 Server version: MySQL 3.23.39
ATIS: Total time: 39 wallclock secs ( 8.05 usr 5.53 sys + 0.00 cusr 0.00 csys = 0.00 CPU) ATIS: Total time: 39 wallclock secs ( 8.05 usr 5.44 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
alter-table: Total time: 405 wallclock secs ( 0.30 usr 0.16 sys + 0.00 cusr 0.00 csys = 0.00 CPU) alter-table: Total time: 345 wallclock secs ( 0.29 usr 0.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
big-tables: Total time: 40 wallclock secs ( 7.49 usr 10.23 sys + 0.00 cusr 0.00 csys = 0.00 CPU) big-tables: Total time: 38 wallclock secs ( 7.19 usr 9.54 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
connect: Total time: 76 wallclock secs (33.34 usr 18.80 sys + 0.00 cusr 0.00 csys = 0.00 CPU) connect: Total time: 76 wallclock secs (34.04 usr 17.73 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
create: Total time: 147 wallclock secs ( 9.75 usr 5.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU) create: Total time: 225 wallclock secs (10.03 usr 4.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
insert: Total time: 2318 wallclock secs (663.06 usr 307.16 sys + 0.00 cusr 0.00 csys = 0.00 CPU) insert: Total time: 2279 wallclock secs (634.62 usr 299.74 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
select: Total time: 1346 wallclock secs (63.34 usr 28.50 sys + 0.00 cusr 0.00 csys = 0.00 CPU) select: Total time: 1360 wallclock secs (65.68 usr 27.91 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
wisconsin: Total time: 19 wallclock secs ( 3.99 usr 3.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU) wisconsin: Total time: 18 wallclock secs ( 3.78 usr 3.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
All 8 test executed successfully All 8 test executed successfully
Totals per operation: Totals per operation:
Operation seconds usr sys cpu tests Operation seconds usr sys cpu tests
alter_table_add 219.00 0.16 0.07 0.00 992 alter_table_add 187.00 0.18 0.06 0.00 992
alter_table_drop 178.00 0.06 0.04 0.00 496 alter_table_drop 150.00 0.05 0.05 0.00 496
connect 14.00 7.60 2.34 0.00 10000 connect 14.00 8.11 2.28 0.00 10000
connect+select_1_row 17.00 8.25 3.12 0.00 10000 connect+select_1_row 17.00 8.45 3.08 0.00 10000
connect+select_simple 16.00 7.88 3.28 0.00 10000 connect+select_simple 16.00 8.44 2.99 0.00 10000
count 55.00 0.04 0.01 0.00 100 count 50.00 0.04 0.01 0.00 100
count_distinct 48.00 0.40 0.10 0.00 1000 count_distinct 51.00 0.44 0.11 0.00 1000
count_distinct_2 50.00 0.42 0.12 0.00 1000 count_distinct_2 49.00 0.41 0.14 0.00 1000
count_distinct_big 137.00 6.05 7.22 0.00 120 count_distinct_big 137.00 6.09 6.97 0.00 120
count_distinct_group 69.00 0.98 0.61 0.00 1000 count_distinct_group 75.00 0.97 0.60 0.00 1000
count_distinct_group_on_key 42.00 0.42 0.15 0.00 1000 count_distinct_group_on_key 47.00 0.45 0.14 0.00 1000
count_distinct_group_on_key_parts 70.00 0.97 0.59 0.00 1000 count_distinct_group_on_key_parts 75.00 0.98 0.61 0.00 1000
count_distinct_key_prefix 38.00 0.39 0.12 0.00 1000 count_distinct_key_prefix 41.00 0.42 0.13 0.00 1000
count_group_on_key_parts 42.00 0.94 0.56 0.00 1000 count_group_on_key_parts 38.00 0.89 0.59 0.00 1000
count_on_key 391.00 16.30 4.71 0.00 50100 count_on_key 386.00 17.16 4.60 0.00 50100
create+drop 13.00 2.39 1.35 0.00 10000 create+drop 12.00 2.44 1.26 0.00 10000
create_MANY_tables 104.00 1.76 0.73 0.00 10000 create_MANY_tables 183.00 1.96 0.78 0.00 10000
create_index 4.00 0.00 0.00 0.00 8 create_index 4.00 0.00 0.00 0.00 8
create_key+drop 17.00 4.00 1.40 0.00 10000 create_key+drop 17.00 4.03 1.40 0.00 10000
create_table 0.00 0.00 0.00 0.00 31 create_table 0.00 0.00 0.01 0.00 31
delete_all 10.00 0.00 0.00 0.00 12 delete_all 11.00 0.00 0.00 0.00 12
delete_all_many_keys 51.00 0.03 0.01 0.00 1 delete_all_many_keys 52.00 0.02 0.01 0.00 1
delete_big 0.00 0.00 0.00 0.00 1 delete_big 1.00 0.00 0.00 0.00 1
delete_big_many_keys 51.00 0.03 0.01 0.00 128 delete_big_many_keys 52.00 0.01 0.01 0.00 128
delete_key 5.00 0.64 0.59 0.00 10000 delete_key 4.00 0.59 0.58 0.00 10000
drop_index 4.00 0.00 0.00 0.00 8 drop_index 4.00 0.00 0.00 0.00 8
drop_table 0.00 0.00 0.00 0.00 28 drop_table 0.00 0.00 0.01 0.00 28
drop_table_when_MANY_tables 7.00 0.64 0.63 0.00 10000 drop_table_when_MANY_tables 6.00 0.61 0.57 0.00 10000
insert 137.00 24.38 23.04 0.00 350768 insert 131.00 23.35 22.54 0.00 350768
insert_duplicates 40.00 5.91 6.68 0.00 100000 insert_duplicates 39.00 6.17 6.65 0.00 100000
insert_key 97.00 8.84 6.70 0.00 100000 insert_key 95.00 8.00 5.91 0.00 100000
insert_many_fields 14.00 0.33 0.14 0.00 2000 insert_many_fields 14.00 0.34 0.13 0.00 2000
insert_select_1_key 6.00 0.00 0.00 0.00 1 insert_select_1_key 5.00 0.00 0.00 0.00 1
insert_select_2_keys 6.00 0.00 0.00 0.00 1 insert_select_2_keys 7.00 0.00 0.00 0.00 1
min_max 22.00 0.02 0.00 0.00 60 min_max 22.00 0.02 0.01 0.00 60
min_max_on_key 164.00 26.11 7.96 0.00 85000 min_max_on_key 164.00 27.09 7.47 0.00 85000
multiple_value_insert 7.00 1.91 0.06 0.00 100000 multiple_value_insert 8.00 1.89 0.06 0.00 100000
order_by_big 49.00 17.41 20.76 0.00 10 order_by_big 47.00 17.25 20.19 0.00 10
order_by_big_key 32.00 18.87 13.82 0.00 10 order_by_big_key 32.00 18.66 13.81 0.00 10
order_by_big_key2 31.00 17.40 13.49 0.00 10 order_by_big_key2 31.00 17.10 13.60 0.00 10
order_by_big_key_desc 33.00 18.88 13.81 0.00 10 order_by_big_key_desc 33.00 18.68 13.83 0.00 10
order_by_big_key_diff 45.00 17.45 20.78 0.00 10 order_by_big_key_diff 45.00 17.28 20.09 0.00 10
order_by_big_key_prefix 31.00 17.49 13.48 0.00 10 order_by_big_key_prefix 30.00 16.96 13.61 0.00 10
order_by_key2_diff 4.00 1.66 1.15 0.00 500 order_by_key2_diff 5.00 1.58 1.19 0.00 500
order_by_key_prefix 3.00 0.93 0.63 0.00 500 order_by_key_prefix 2.00 0.94 0.59 0.00 500
order_by_range 4.00 0.95 0.63 0.00 500 order_by_range 5.00 0.92 0.60 0.00 500
outer_join 67.00 0.01 0.00 0.00 10 outer_join 63.00 0.01 0.00 0.00 10
outer_join_found 59.00 0.01 0.00 0.00 10 outer_join_found 57.00 0.00 0.00 0.00 10
outer_join_not_found 41.00 0.01 0.00 0.00 500 outer_join_not_found 38.00 0.00 0.00 0.00 500
outer_join_on_key 45.00 0.00 0.00 0.00 10 outer_join_on_key 41.00 0.01 0.00 0.00 10
select_1_row 3.00 0.30 0.80 0.00 10000 select_1_row 3.00 0.28 0.85 0.00 10000
select_2_rows 2.00 0.32 0.95 0.00 10000 select_2_rows 3.00 0.37 0.91 0.00 10000
select_big 52.00 25.87 20.37 0.00 10080 select_big 31.00 17.13 13.64 0.00 80
select_column+column 3.00 0.31 0.79 0.00 10000 select_big_str 19.00 7.79 6.10 0.00 10000
select_diff_key 146.00 0.24 0.05 0.00 500 select_column+column 3.00 0.31 0.71 0.00 10000
select_distinct 10.00 1.53 0.98 0.00 800 select_diff_key 151.00 0.24 0.05 0.00 500
select_group 51.00 1.49 0.67 0.00 2911 select_distinct 11.00 1.54 0.97 0.00 800
select_group_when_MANY_tables 6.00 0.95 0.90 0.00 10000 select_group 53.00 1.53 0.65 0.00 2911
select_join 2.00 0.44 0.33 0.00 100 select_group_when_MANY_tables 7.00 0.99 0.95 0.00 10000
select_key 138.00 75.48 21.52 0.00 200000 select_join 2.00 0.48 0.33 0.00 100
select_key2 143.00 75.08 21.72 0.00 200000 select_key 136.00 72.34 21.48 0.00 200000
select_key2_return_key 136.00 72.18 19.55 0.00 200000 select_key2 140.00 71.17 20.98 0.00 200000
select_key2_return_prim 140.00 73.57 20.03 0.00 200000 select_key2_return_key 134.00 69.60 18.79 0.00 200000
select_key_prefix 144.00 76.03 21.36 0.00 200000 select_key2_return_prim 138.00 70.28 19.14 0.00 200000
select_key_prefix_join 11.00 3.47 2.55 0.00 100 select_key_prefix 141.00 71.11 21.99 0.00 200000
select_key_return_key 135.00 73.99 20.17 0.00 200000 select_key_prefix_join 10.00 3.45 2.53 0.00 100
select_many_fields 25.00 7.16 10.10 0.00 2000 select_key_return_key 132.00 70.93 19.96 0.00 200000
select_query_cache 82.00 3.31 1.00 0.00 10000 select_many_fields 24.00 6.84 9.41 0.00 2000
select_query_cache2 83.00 3.20 0.96 0.00 10000 select_query_cache 82.00 3.53 0.98 0.00 10000
select_range 225.00 7.61 5.12 0.00 410 select_query_cache2 84.00 3.50 1.01 0.00 10000
select_range_key2 19.00 6.41 2.20 0.00 25010 select_range 230.00 7.50 5.11 0.00 410
select_range_prefix 20.00 6.33 2.25 0.00 25010 select_range_key2 19.00 6.21 2.20 0.00 25010
select_simple 1.00 0.33 0.77 0.00 10000 select_range_prefix 19.00 6.24 2.16 0.00 25010
select_simple_join 1.00 0.58 0.37 0.00 500 select_simple 1.00 0.29 0.81 0.00 10000
update_big 25.00 0.00 0.00 0.00 10 select_simple_join 2.00 0.58 0.37 0.00 500
update_of_key 26.00 2.53 2.87 0.00 50000 update_big 28.00 0.00 0.00 0.00 10
update_of_key_big 19.00 0.05 0.03 0.00 501 update_of_key 24.00 2.35 2.65 0.00 50000
update_of_primary_key_many_keys 23.00 0.02 0.03 0.00 256 update_of_key_big 21.00 0.05 0.03 0.00 501
update_with_key 134.00 23.08 21.47 0.00 300000 update_of_primary_key_many_keys 22.00 0.02 0.01 0.00 256
update_with_key_prefix 41.00 6.81 6.85 0.00 100000 update_with_key 129.00 20.61 19.68 0.00 300000
wisc_benchmark 4.00 1.59 0.88 0.00 114 update_with_key_prefix 37.00 5.70 5.82 0.00 100000
TOTALS 4439.00 789.18 378.53 0.00 2667247 wisc_benchmark 3.00 1.61 0.89 0.00 114
TOTALS 4432.00 763.56 368.43 0.00 2667247

View File

@ -1,16 +1,16 @@
Testing server 'MySQL 3.23.36' at 2001-03-26 1:22:58 Testing server 'MySQL 3.23.39' at 2002-09-08 10:27:01
Testing of ALTER TABLE Testing of ALTER TABLE
Testing with 1000 columns and 1000 rows in 20 steps Testing with 1000 columns and 1000 rows in 20 steps
Insert data into the table Insert data into the table
Time for insert (1000) 0 wallclock secs ( 0.07 usr 0.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert (1000) 0 wallclock secs ( 0.05 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for alter_table_add (992): 219 wallclock secs ( 0.16 usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for alter_table_add (992): 187 wallclock secs ( 0.18 usr 0.06 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 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 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): 178 wallclock secs ( 0.06 usr 0.04 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for alter_table_drop (496): 150 wallclock secs ( 0.05 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 405 wallclock secs ( 0.30 usr 0.16 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 345 wallclock secs ( 0.29 usr 0.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU)

View File

@ -1,19 +1,19 @@
Testing server 'MySQL 3.23.36' at 2001-03-26 1:29:43 Testing server 'MySQL 3.23.39' at 2002-09-08 10:32:47
Testing of some unusual tables Testing of some unusual tables
All tests are done 1000 times with 1000 fields All tests are done 1000 times with 1000 fields
Testing table with 1000 fields Testing table with 1000 fields
Testing select * from table with 1 record Testing select * from table with 1 record
Time to select_many_fields(1000): 10 wallclock secs ( 3.55 usr 5.04 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_many_fields(1000): 10 wallclock secs ( 3.45 usr 4.65 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select all_fields from table with 1 record Testing select all_fields from table with 1 record
Time to select_many_fields(1000): 15 wallclock secs ( 3.61 usr 5.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_many_fields(1000): 14 wallclock secs ( 3.39 usr 4.76 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert VALUES() Testing insert VALUES()
Time to insert_many_fields(1000): 5 wallclock secs ( 0.30 usr 0.09 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert_many_fields(1000): 5 wallclock secs ( 0.31 usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert (all_fields) VALUES() Testing insert (all_fields) VALUES()
Time to insert_many_fields(1000): 9 wallclock secs ( 0.03 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert_many_fields(1000): 9 wallclock secs ( 0.03 usr 0.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 40 wallclock secs ( 7.49 usr 10.23 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 38 wallclock secs ( 7.19 usr 9.54 sys + 0.00 cusr 0.00 csys = 0.00 CPU)

View File

@ -1,30 +1,30 @@
Testing server 'MySQL 3.23.36' at 2001-03-26 1:30:23 Testing server 'MySQL 3.23.39' at 2002-09-08 10:33:26
Testing the speed of connecting to the server and sending of data Testing the speed of connecting to the server and sending of data
All tests are done 10000 times All tests are done 10000 times
Testing connection/disconnect Testing connection/disconnect
Time to connect (10000): 14 wallclock secs ( 7.60 usr 2.34 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to connect (10000): 14 wallclock secs ( 8.11 usr 2.28 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test connect/simple select/disconnect Test connect/simple select/disconnect
Time for connect+select_simple (10000): 16 wallclock secs ( 7.88 usr 3.28 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for connect+select_simple (10000): 16 wallclock secs ( 8.44 usr 2.99 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test simple select Test simple select
Time for select_simple (10000): 1 wallclock secs ( 0.33 usr 0.77 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_simple (10000): 1 wallclock secs ( 0.29 usr 0.81 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing connect/select 1 row from table/disconnect Testing connect/select 1 row from table/disconnect
Time to connect+select_1_row (10000): 17 wallclock secs ( 8.25 usr 3.12 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to connect+select_1_row (10000): 17 wallclock secs ( 8.45 usr 3.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select 1 row from table Testing select 1 row from table
Time to select_1_row (10000): 3 wallclock secs ( 0.30 usr 0.80 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_1_row (10000): 3 wallclock secs ( 0.28 usr 0.85 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select 2 rows from table Testing select 2 rows from table
Time to select_2_rows (10000): 2 wallclock secs ( 0.32 usr 0.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_2_rows (10000): 3 wallclock secs ( 0.37 usr 0.91 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test select with aritmetic (+) Test select with aritmetic (+)
Time for select_column+column (10000): 3 wallclock secs ( 0.31 usr 0.79 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_column+column (10000): 3 wallclock secs ( 0.31 usr 0.71 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing retrieval of big records (65000 bytes) Testing retrieval of big records (65000 bytes)
Time to select_big (10000): 20 wallclock secs ( 8.34 usr 6.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_big_str (10000): 19 wallclock secs ( 7.79 usr 6.10 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 76 wallclock secs (33.34 usr 18.80 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 76 wallclock secs (34.04 usr 17.73 sys + 0.00 cusr 0.00 csys = 0.00 CPU)

View File

@ -1,18 +1,18 @@
Testing server 'MySQL 3.23.36' at 2001-03-26 1:31:40 Testing server 'MySQL 3.23.39' at 2002-09-08 10:34:42
Testing the speed of creating and droping tables Testing the speed of creating and droping tables
Testing with 10000 tables and 10000 loop count Testing with 10000 tables and 10000 loop count
Testing create of tables Testing create of tables
Time for create_MANY_tables (10000): 104 wallclock secs ( 1.76 usr 0.73 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create_MANY_tables (10000): 183 wallclock secs ( 1.96 usr 0.78 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Accessing tables Accessing tables
Time to select_group_when_MANY_tables (10000): 6 wallclock secs ( 0.95 usr 0.90 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to select_group_when_MANY_tables (10000): 7 wallclock secs ( 0.99 usr 0.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing drop Testing drop
Time for drop_table_when_MANY_tables (10000): 7 wallclock secs ( 0.64 usr 0.63 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for drop_table_when_MANY_tables (10000): 6 wallclock secs ( 0.61 usr 0.57 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing create+drop Testing create+drop
Time for create+drop (10000): 13 wallclock secs ( 2.39 usr 1.35 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create+drop (10000): 12 wallclock secs ( 2.44 usr 1.26 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for create_key+drop (10000): 17 wallclock secs ( 4.00 usr 1.40 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for create_key+drop (10000): 17 wallclock secs ( 4.03 usr 1.40 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 147 wallclock secs ( 9.75 usr 5.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 225 wallclock secs (10.03 usr 4.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU)

View File

@ -1,4 +1,4 @@
Testing server 'MySQL 3.23.36' at 2001-03-26 1:34:07 Testing server 'MySQL 3.23.39' at 2002-09-08 10:38:28
Testing the speed of inserting data into 1 table and do some selects on it. 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. The tests are done with a table that has 100000 rows.
@ -8,83 +8,83 @@ Creating tables
Inserting 100000 rows in order Inserting 100000 rows in order
Inserting 100000 rows in reverse order Inserting 100000 rows in reverse order
Inserting 100000 rows in random order Inserting 100000 rows in random order
Time for insert (300000): 114 wallclock secs (20.61 usr 19.46 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert (300000): 110 wallclock secs (19.96 usr 19.20 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert of duplicates Testing insert of duplicates
Time for insert_duplicates (100000): 40 wallclock secs ( 5.91 usr 6.68 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert_duplicates (100000): 39 wallclock secs ( 6.17 usr 6.65 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Retrieving data from the table Retrieving data from the table
Time for select_big (10:3000000): 31 wallclock secs (17.41 usr 13.54 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_big (10:3000000): 31 wallclock secs (17.01 usr 13.56 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big_key (10:3000000): 32 wallclock secs (18.87 usr 13.82 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big_key (10:3000000): 32 wallclock secs (18.66 usr 13.81 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big_key_desc (10:3000000): 33 wallclock secs (18.88 usr 13.81 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big_key_desc (10:3000000): 33 wallclock secs (18.68 usr 13.83 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big_key_prefix (10:3000000): 31 wallclock secs (17.49 usr 13.48 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big_key_prefix (10:3000000): 30 wallclock secs (16.96 usr 13.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big_key2 (10:3000000): 31 wallclock secs (17.40 usr 13.49 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big_key2 (10:3000000): 31 wallclock secs (17.10 usr 13.60 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big_key_diff (10:3000000): 45 wallclock secs (17.45 usr 20.78 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big_key_diff (10:3000000): 45 wallclock secs (17.28 usr 20.09 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_big (10:3000000): 49 wallclock secs (17.41 usr 20.76 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_big (10:3000000): 47 wallclock secs (17.25 usr 20.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_range (500:125750): 4 wallclock secs ( 0.95 usr 0.63 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_range (500:125750): 5 wallclock secs ( 0.92 usr 0.60 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_key_prefix (500:125750): 3 wallclock secs ( 0.93 usr 0.63 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_key_prefix (500:125750): 2 wallclock secs ( 0.94 usr 0.59 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for order_by_key2_diff (500:250500): 4 wallclock secs ( 1.66 usr 1.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for order_by_key2_diff (500:250500): 5 wallclock secs ( 1.58 usr 1.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_diff_key (500:1000): 146 wallclock secs ( 0.24 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_diff_key (500:1000): 151 wallclock secs ( 0.24 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_range_prefix (5010:42084): 11 wallclock secs ( 2.76 usr 0.96 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range_prefix (5010:42084): 10 wallclock secs ( 2.65 usr 0.92 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_range_key2 (5010:42084): 11 wallclock secs ( 2.81 usr 0.91 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range_key2 (5010:42084): 11 wallclock secs ( 2.64 usr 0.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key_prefix (200000): 144 wallclock secs (76.03 usr 21.36 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_key_prefix (200000): 141 wallclock secs (71.11 usr 21.99 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key (200000): 138 wallclock secs (75.48 usr 21.52 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_key (200000): 136 wallclock secs (72.34 usr 21.48 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key_return_key (200000): 135 wallclock secs (73.99 usr 20.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_key_return_key (200000): 132 wallclock secs (70.93 usr 19.96 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key2 (200000): 143 wallclock secs (75.08 usr 21.72 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_key2 (200000): 140 wallclock secs (71.17 usr 20.98 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key2_return_key (200000): 136 wallclock secs (72.18 usr 19.55 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_key2_return_key (200000): 134 wallclock secs (69.60 usr 18.79 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_key2_return_prim (200000): 140 wallclock secs (73.57 usr 20.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_key2_return_prim (200000): 138 wallclock secs (70.28 usr 19.14 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test of compares with simple ranges Test of compares with simple ranges
Time for select_range_prefix (20000:43500): 9 wallclock secs ( 3.57 usr 1.29 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range_prefix (20000:43500): 9 wallclock secs ( 3.59 usr 1.24 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_range_key2 (20000:43500): 8 wallclock secs ( 3.60 usr 1.29 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range_key2 (20000:43500): 8 wallclock secs ( 3.57 usr 1.25 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_group (111): 40 wallclock secs ( 0.05 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_group (111): 42 wallclock secs ( 0.05 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for min_max_on_key (15000): 9 wallclock secs ( 4.67 usr 1.41 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for min_max_on_key (15000): 9 wallclock secs ( 4.54 usr 1.27 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for min_max (60): 22 wallclock secs ( 0.02 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for min_max (60): 22 wallclock secs ( 0.02 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_on_key (100): 36 wallclock secs ( 0.03 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_on_key (100): 37 wallclock secs ( 0.04 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count (100): 55 wallclock secs ( 0.04 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count (100): 50 wallclock secs ( 0.04 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_big (20): 55 wallclock secs ( 0.01 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_big (20): 57 wallclock secs ( 0.01 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update of keys with functions Testing update of keys with functions
Time for update_of_key (50000): 26 wallclock secs ( 2.53 usr 2.87 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_of_key (50000): 24 wallclock secs ( 2.35 usr 2.65 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for update_of_key_big (501): 19 wallclock secs ( 0.05 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_of_key_big (501): 21 wallclock secs ( 0.05 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update with key Testing update with key
Time for update_with_key (300000): 134 wallclock secs (23.08 usr 21.47 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_with_key (300000): 129 wallclock secs (20.61 usr 19.68 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for update_with_key_prefix (100000): 41 wallclock secs ( 6.81 usr 6.85 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_with_key_prefix (100000): 37 wallclock secs ( 5.70 usr 5.82 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update of all rows Testing update of all rows
Time for update_big (10): 25 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_big (10): 28 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing left outer join Testing left outer join
Time for outer_join_on_key (10:10): 45 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for outer_join_on_key (10:10): 41 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for outer_join (10:10): 67 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for outer_join (10:10): 63 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for outer_join_found (10:10): 59 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for outer_join_found (10:10): 57 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): 41 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for outer_join_not_found (500:10): 38 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing INSERT INTO ... SELECT Testing INSERT INTO ... SELECT
Time for insert_select_1_key (1): 6 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert_select_1_key (1): 5 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for insert_select_2_keys (1): 6 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert_select_2_keys (1): 7 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for drop table(2): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) 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 Testing delete
Time for delete_key (10000): 5 wallclock secs ( 0.64 usr 0.59 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for delete_key (10000): 4 wallclock secs ( 0.59 usr 0.58 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for delete_all (12): 10 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for delete_all (12): 11 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 Insert into table with 16 keys and with a primary key with 16 parts
Time for insert_key (100000): 97 wallclock secs ( 8.84 usr 6.70 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for insert_key (100000): 95 wallclock secs ( 8.00 usr 5.91 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update of keys Testing update of keys
Time for update_of_primary_key_many_keys (256): 23 wallclock secs ( 0.02 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for update_of_primary_key_many_keys (256): 22 wallclock secs ( 0.02 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Deleting rows from the table Deleting rows from the table
Time for delete_big_many_keys (128): 51 wallclock secs ( 0.03 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for delete_big_many_keys (128): 52 wallclock secs ( 0.01 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Deleting everything from table Deleting everything from table
Time for delete_all_many_keys (1): 51 wallclock secs ( 0.03 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for delete_all_many_keys (1): 52 wallclock secs ( 0.02 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting 100000 rows with multiple values Inserting 100000 rows with multiple values
Time for multiple_value_insert (100000): 7 wallclock secs ( 1.91 usr 0.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for multiple_value_insert (100000): 8 wallclock secs ( 1.89 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) 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: 2318 wallclock secs (663.06 usr 307.16 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 2279 wallclock secs (634.62 usr 299.74 sys + 0.00 cusr 0.00 csys = 0.00 CPU)

View File

@ -1,30 +1,30 @@
Testing server 'MySQL 3.23.36' at 2001-03-26 2:12:47 Testing server 'MySQL 3.23.39' at 2002-09-08 11:16:28
Testing the speed of selecting on keys that consist of many parts 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. The test-table has 10000 rows and the test is done with 500 ranges.
Creating table Creating table
Inserting 10000 rows Inserting 10000 rows
Time to insert (10000): 4 wallclock secs ( 0.81 usr 0.63 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert (10000): 4 wallclock secs ( 0.71 usr 0.65 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test if the database has a query cache Test if the database has a query cache
Time for select_query_cache (10000): 82 wallclock secs ( 3.31 usr 1.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_query_cache (10000): 82 wallclock secs ( 3.53 usr 0.98 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_query_cache2 (10000): 83 wallclock secs ( 3.20 usr 0.96 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_query_cache2 (10000): 84 wallclock secs ( 3.50 usr 1.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing big selects on the table Testing big selects on the table
Time for select_big (70:17207): 1 wallclock secs ( 0.12 usr 0.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_big (70:17207): 0 wallclock secs ( 0.12 usr 0.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for select_range (410:1057904): 225 wallclock secs ( 7.61 usr 5.12 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for select_range (410:1057904): 230 wallclock secs ( 7.50 usr 5.11 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for min_max_on_key (70000): 155 wallclock secs (21.44 usr 6.55 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for min_max_on_key (70000): 155 wallclock secs (22.55 usr 6.20 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_on_key (50000): 355 wallclock secs (16.27 usr 4.69 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_on_key (50000): 349 wallclock secs (17.12 usr 4.59 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_group_on_key_parts (1000:100000): 42 wallclock secs ( 0.94 usr 0.56 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_group_on_key_parts (1000:100000): 38 wallclock secs ( 0.89 usr 0.59 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing count(distinct) on the table Testing count(distinct) on the table
Time for count_distinct_key_prefix (1000:1000): 38 wallclock secs ( 0.39 usr 0.12 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_key_prefix (1000:1000): 41 wallclock secs ( 0.42 usr 0.13 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct (1000:1000): 48 wallclock secs ( 0.40 usr 0.10 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct (1000:1000): 51 wallclock secs ( 0.44 usr 0.11 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_2 (1000:1000): 50 wallclock secs ( 0.42 usr 0.12 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_2 (1000:1000): 49 wallclock secs ( 0.41 usr 0.14 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group_on_key (1000:6000): 42 wallclock secs ( 0.42 usr 0.15 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_group_on_key (1000:6000): 47 wallclock secs ( 0.45 usr 0.14 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group_on_key_parts (1000:100000): 70 wallclock secs ( 0.97 usr 0.59 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_group_on_key_parts (1000:100000): 75 wallclock secs ( 0.98 usr 0.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_group (1000:100000): 69 wallclock secs ( 0.98 usr 0.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_group (1000:100000): 75 wallclock secs ( 0.97 usr 0.60 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time for count_distinct_big (100:1000000): 82 wallclock secs ( 6.04 usr 7.21 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for count_distinct_big (100:1000000): 80 wallclock secs ( 6.08 usr 6.96 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 1346 wallclock secs (63.34 usr 28.50 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 1360 wallclock secs (65.68 usr 27.91 sys + 0.00 cusr 0.00 csys = 0.00 CPU)

View File

@ -1,14 +1,14 @@
Testing server 'MySQL 3.23.36' at 2001-03-26 2:35:13 Testing server 'MySQL 3.23.39' at 2002-09-08 11:39:09
Wisconsin benchmark test 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) 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 Inserting data
Time to insert (31000): 15 wallclock secs ( 2.39 usr 2.30 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time to insert (31000): 14 wallclock secs ( 2.17 usr 2.10 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) Time to delete_big (1): 1 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Running actual benchmark Running actual benchmark
Time for wisc_benchmark (114): 4 wallclock secs ( 1.59 usr 0.88 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Time for wisc_benchmark (114): 3 wallclock secs ( 1.61 usr 0.89 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Total time: 19 wallclock secs ( 3.99 usr 3.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU) Total time: 18 wallclock secs ( 3.78 usr 3.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)

View File

@ -351,7 +351,8 @@ berkeley_cmp_hidden_key(DB* file, const DBT *new_key, const DBT *saved_key)
static int static int
berkeley_cmp_packed_key(DB *file, const DBT *new_key, const DBT *saved_key) berkeley_cmp_packed_key(DB *file, const DBT *new_key, const DBT *saved_key)
{ {
KEY *key= (KEY*) (file->app_private); KEY *key= (new_key->app_private ? (KEY*) new_key->app_private :
(KEY*) (file->app_private));
char *new_key_ptr= (char*) new_key->data; char *new_key_ptr= (char*) new_key->data;
char *saved_key_ptr=(char*) saved_key->data; char *saved_key_ptr=(char*) saved_key->data;
KEY_PART_INFO *key_part= key->key_part, *end=key_part+key->key_parts; KEY_PART_INFO *key_part= key->key_part, *end=key_part+key->key_parts;
@ -388,7 +389,8 @@ berkeley_cmp_packed_key(DB *file, const DBT *new_key, const DBT *saved_key)
static int static int
berkeley_cmp_fix_length_key(DB *file, const DBT *new_key, const DBT *saved_key) berkeley_cmp_fix_length_key(DB *file, const DBT *new_key, const DBT *saved_key)
{ {
KEY *key=(KEY*) (file->app_private); KEY *key= (new_key->app_private ? (KEY*) new_key->app_private :
(KEY*) (file->app_private));
char *new_key_ptr= (char*) new_key->data; char *new_key_ptr= (char*) new_key->data;
char *saved_key_ptr=(char*) saved_key->data; char *saved_key_ptr=(char*) saved_key->data;
KEY_PART_INFO *key_part= key->key_part, *end=key_part+key->key_parts; KEY_PART_INFO *key_part= key->key_part, *end=key_part+key->key_parts;
@ -453,8 +455,10 @@ int ha_berkeley::open(const char *name, int mode, uint test_if_locked)
if ((primary_key=table->primary_key) >= MAX_KEY) if ((primary_key=table->primary_key) >= MAX_KEY)
{ // No primary key { // No primary key
primary_key=table->keys; primary_key=table->keys;
key_used_on_scan=MAX_KEY;
ref_length=hidden_primary_key=BDB_HIDDEN_PRIMARY_KEY_LENGTH; ref_length=hidden_primary_key=BDB_HIDDEN_PRIMARY_KEY_LENGTH;
} }
else
key_used_on_scan=primary_key; key_used_on_scan=primary_key;
/* Need some extra memory in case of packed keys */ /* Need some extra memory in case of packed keys */
@ -728,9 +732,9 @@ DBT *ha_berkeley::create_key(DBT *key, uint keynr, char *buff,
const byte *record, int key_length) const byte *record, int key_length)
{ {
bzero((char*) key,sizeof(*key)); bzero((char*) key,sizeof(*key));
if (hidden_primary_key && keynr == primary_key) if (hidden_primary_key && keynr == primary_key)
{ {
/* We don't need to set app_private here */
key->data=current_ident; key->data=current_ident;
key->size=BDB_HIDDEN_PRIMARY_KEY_LENGTH; key->size=BDB_HIDDEN_PRIMARY_KEY_LENGTH;
return key; return key;
@ -742,6 +746,7 @@ DBT *ha_berkeley::create_key(DBT *key, uint keynr, char *buff,
DBUG_ENTER("create_key"); DBUG_ENTER("create_key");
key->data=buff; key->data=buff;
key->app_private= key_info;
for ( ; key_part != end && key_length > 0; key_part++) for ( ; key_part != end && key_length > 0; key_part++)
{ {
if (key_part->null_bit) if (key_part->null_bit)
@ -775,10 +780,11 @@ DBT *ha_berkeley::pack_key(DBT *key, uint keynr, char *buff,
KEY *key_info=table->key_info+keynr; KEY *key_info=table->key_info+keynr;
KEY_PART_INFO *key_part=key_info->key_part; KEY_PART_INFO *key_part=key_info->key_part;
KEY_PART_INFO *end=key_part+key_info->key_parts; KEY_PART_INFO *end=key_part+key_info->key_parts;
DBUG_ENTER("pack_key2"); DBUG_ENTER("bdb:pack_key");
bzero((char*) key,sizeof(*key)); bzero((char*) key,sizeof(*key));
key->data=buff; key->data=buff;
key->app_private= (void*) key_info;
for (; key_part != end && (int) key_length > 0 ; key_part++) for (; key_part != end && (int) key_length > 0 ; key_part++)
{ {
@ -1371,6 +1377,7 @@ int ha_berkeley::read_row(int error, char *buf, uint keynr, DBT *row,
bzero((char*) &key,sizeof(key)); bzero((char*) &key,sizeof(key));
key.data=key_buff; key.data=key_buff;
key.size=row->size; key.size=row->size;
key.app_private= (void*) (table->key_info+primary_key);
memcpy(key_buff,row->data,row->size); memcpy(key_buff,row->data,row->size);
/* Read the data into current_row */ /* Read the data into current_row */
current_row.flags=DB_DBT_REALLOC; current_row.flags=DB_DBT_REALLOC;
@ -1535,6 +1542,7 @@ int ha_berkeley::rnd_next(byte *buf)
DBT *ha_berkeley::get_pos(DBT *to, byte *pos) DBT *ha_berkeley::get_pos(DBT *to, byte *pos)
{ {
/* We don't need to set app_private here */
bzero((char*) to,sizeof(*to)); bzero((char*) to,sizeof(*to));
to->data=pos; to->data=pos;
@ -1948,6 +1956,7 @@ longlong ha_berkeley::get_auto_increment()
table->next_number_key_offset); table->next_number_key_offset);
/* Store for compare */ /* Store for compare */
memcpy(old_key.data=key_buff2, key_buff, (old_key.size=last_key.size)); memcpy(old_key.data=key_buff2, key_buff, (old_key.size=last_key.size));
old_key.app_private=(void*) key_info;
error=1; error=1;
{ {
/* Modify the compare so that we will find the next key */ /* Modify the compare so that we will find the next key */

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2000 NuSphere Corporation /* Copyright (C) 2000 MySQL AB & NuSphere Corporation
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by
@ -14,6 +14,7 @@
along with this program; if not, write to the Free Software along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */
/* This file is based on ha_berkeley.cc */
#ifdef __GNUC__ #ifdef __GNUC__
#pragma implementation // gcc: Class implementation #pragma implementation // gcc: Class implementation

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2000 NuSphere Corporation /* Copyright (C) 2000 MySQL AB & NuSphere Corporation
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by it under the terms of the GNU General Public License as published by

View File

@ -2885,4 +2885,49 @@ ha_innobase::store_lock(
return(to); return(to);
} }
/***********************************************************************
Returns the next auto-increment column value for the table. write_row
normally fetches the value from the cache in the data dictionary. This
function in used by SHOW TABLE STATUS and when the first insert to the table
is done after database startup. */
longlong
ha_innobase::get_auto_increment()
/*=============================*/
/* out: the next auto-increment column value */
{
row_prebuilt_t* prebuilt = (row_prebuilt_t*) innobase_prebuilt;
longlong nr;
int error;
(void) extra(HA_EXTRA_KEYREAD);
index_init(table->next_number_index);
/* We use an exclusive lock when we read the max key value from the
auto-increment column index. This is because then build_template will
advise InnoDB to fetch all columns. In SHOW TABLE STATUS the query
id of the auto-increment column is not changed, and previously InnoDB
did not fetch it, causing SHOW TABLE STATUS to show wrong values
for the autoinc column. */
prebuilt->select_lock_type = LOCK_X;
prebuilt->trx->mysql_n_tables_locked += 1;
error=index_last(table->record[1]);
if (error) {
nr = 1;
} else {
nr = (longlong) table->next_number_field->
val_int_offset(table->rec_buff_length) + 1;
}
(void) extra(HA_EXTRA_NO_KEYREAD);
index_end();
return(nr);
}
#endif /* HAVE_INNOBASE_DB */ #endif /* HAVE_INNOBASE_DB */

View File

@ -147,6 +147,7 @@ class ha_innobase: public handler
THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to, THR_LOCK_DATA **store_lock(THD *thd, THR_LOCK_DATA **to,
enum thr_lock_type lock_type); enum thr_lock_type lock_type);
longlong get_auto_increment();
}; };
extern bool innodb_skip; extern bool innodb_skip;

View File

@ -272,6 +272,7 @@ ulong keybuff_size,sortbuff_size,max_item_sort_length,table_cache_size,
net_interactive_timeout, slow_launch_time = 2L, 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, max_binlog_size; open_files_limit=0, max_binlog_size;
ulong slave_net_timeout;
ulong thread_cache_size=0, binlog_cache_size=0, max_binlog_cache_size=0; ulong thread_cache_size=0, binlog_cache_size=0, max_binlog_cache_size=0;
volatile ulong cached_thread_count=0; volatile ulong cached_thread_count=0;
@ -2782,6 +2783,8 @@ CHANGEABLE_VAR changeable_vars[] = {
0, MALLOC_OVERHEAD, (long) ~0, MALLOC_OVERHEAD, IO_SIZE }, 0, MALLOC_OVERHEAD, (long) ~0, MALLOC_OVERHEAD, IO_SIZE },
{ "record_buffer", (long*) &my_default_record_cache_size, { "record_buffer", (long*) &my_default_record_cache_size,
128*1024L, IO_SIZE*2+MALLOC_OVERHEAD, ~0L, MALLOC_OVERHEAD, IO_SIZE }, 128*1024L, IO_SIZE*2+MALLOC_OVERHEAD, ~0L, MALLOC_OVERHEAD, IO_SIZE },
{ "slave_net_timeout", (long*) &slave_net_timeout,
SLAVE_NET_TIMEOUT, 1, 65535, 0, 1 },
{ "slow_launch_time", (long*) &slow_launch_time, { "slow_launch_time", (long*) &slow_launch_time,
2L, 0L, ~0L, 0, 1 }, 2L, 0L, ~0L, 0, 1 },
{ "sort_buffer", (long*) &sortbuff_size, { "sort_buffer", (long*) &sortbuff_size,
@ -2903,6 +2906,7 @@ struct show_var_st init_vars[]= {
{"query_buffer_size", (char*) &query_buff_size, SHOW_LONG}, {"query_buffer_size", (char*) &query_buff_size, SHOW_LONG},
{"safe_show_database", (char*) &opt_safe_show_db, SHOW_BOOL}, {"safe_show_database", (char*) &opt_safe_show_db, SHOW_BOOL},
{"server_id", (char*) &server_id, SHOW_LONG}, {"server_id", (char*) &server_id, SHOW_LONG},
{"slave_net_timeout", (char*) &slave_net_timeout, SHOW_LONG},
{"skip_locking", (char*) &my_disable_locking, SHOW_MY_BOOL}, {"skip_locking", (char*) &my_disable_locking, SHOW_MY_BOOL},
{"skip_networking", (char*) &opt_disable_networking, SHOW_BOOL}, {"skip_networking", (char*) &opt_disable_networking, SHOW_BOOL},
{"skip_show_database", (char*) &opt_skip_show_db, SHOW_BOOL}, {"skip_show_database", (char*) &opt_skip_show_db, SHOW_BOOL},
@ -3601,6 +3605,7 @@ static void get_options(int argc,char **argv)
break; break;
case OPT_LOW_PRIORITY_UPDATES: case OPT_LOW_PRIORITY_UPDATES:
thd_startup_options|=OPTION_LOW_PRIORITY_UPDATES; thd_startup_options|=OPTION_LOW_PRIORITY_UPDATES;
thr_upgraded_concurrent_insert_lock= TL_WRITE_LOW_PRIORITY;
low_priority_updates=1; low_priority_updates=1;
break; break;
case OPT_BOOTSTRAP: case OPT_BOOTSTRAP:

View File

@ -735,6 +735,7 @@ static int init_slave_thread(THD* thd)
thd->system_thread = thd->bootstrap = 1; thd->system_thread = thd->bootstrap = 1;
thd->client_capabilities = 0; thd->client_capabilities = 0;
my_net_init(&thd->net, 0); my_net_init(&thd->net, 0);
thd->net.timeout = slave_net_timeout;
thd->max_packet_length=thd->net.max_packet; thd->max_packet_length=thd->net.max_packet;
thd->master_access= ~0; thd->master_access= ~0;
thd->priv_user = 0; thd->priv_user = 0;
@ -1330,6 +1331,8 @@ pthread_handler_decl(handle_slave,arg __attribute__((unused)))
thd->thread_stack = (char*)&thd; // remember where our stack is thd->thread_stack = (char*)&thd; // remember where our stack is
thd->temporary_tables = save_temporary_tables; // restore temp tables thd->temporary_tables = save_temporary_tables; // restore temp tables
threads.append(thd); threads.append(thd);
glob_mi.pending = 0; //this should always be set to 0 when the slave thread
// is started
DBUG_PRINT("info",("master info: log_file_name=%s, position=%s", DBUG_PRINT("info",("master info: log_file_name=%s, position=%s",
glob_mi.log_file_name, llstr(glob_mi.pos,llbuff))); glob_mi.log_file_name, llstr(glob_mi.pos,llbuff)));

View File

@ -3,6 +3,10 @@
#include "mysql.h" #include "mysql.h"
#define SLAVE_NET_TIMEOUT 3600
extern ulong slave_net_timeout;
typedef struct st_master_info typedef struct st_master_info
{ {
char log_file_name[FN_REFLEN]; char log_file_name[FN_REFLEN];

View File

@ -1824,9 +1824,8 @@ int mysql_grant (THD *thd, const char *db, List <LEX_USER> &list, uint rights,
*Str, *Str,
(!db ? rights : 0), what))) (!db ? rights : 0), what)))
result= -1; result= -1;
if (db) if (db && replace_db_table(tables[1].table, db, *Str, rights & DB_ACLS,
if (( replace_db_table(tables[1].table, db, *Str, rights, what))
what)))
result= -1; result= -1;
} }
VOID(pthread_mutex_unlock(&acl_cache->lock)); VOID(pthread_mutex_unlock(&acl_cache->lock));

View File

@ -178,12 +178,13 @@ int mysql_delete(THD *thd,
select=make_select(table,0,0,conds,&error); select=make_select(table,0,0,conds,&error);
if (error) if (error)
DBUG_RETURN(-1); DBUG_RETURN(-1);
if (select && select->check_quick(test(thd->options & SQL_SAFE_UPDATES), if ((select && select->check_quick(test(thd->options & SQL_SAFE_UPDATES),
limit)) limit)) ||
!limit)
{ {
delete select; delete select;
send_ok(&thd->net,0L); send_ok(&thd->net,0L);
DBUG_RETURN(0); DBUG_RETURN(0); // Nothing to delete
} }
/* If running in safe sql mode, don't allow updates without keys */ /* If running in safe sql mode, don't allow updates without keys */

View File

@ -871,6 +871,7 @@ static pthread_handler_decl(handle_delayed_insert,arg)
/* Add thread to THD list so that's it's visible in 'show processlist' */ /* Add thread to THD list so that's it's visible in 'show processlist' */
pthread_mutex_lock(&LOCK_thread_count); pthread_mutex_lock(&LOCK_thread_count);
thd->thread_id=thread_id++; thd->thread_id=thread_id++;
thd->end_time();
threads.append(thd); threads.append(thd);
pthread_mutex_unlock(&LOCK_thread_count); pthread_mutex_unlock(&LOCK_thread_count);

View File

@ -556,7 +556,7 @@ pthread_handler_decl(handle_one_connection,arg)
free_root(&thd->mem_root,MYF(0)); free_root(&thd->mem_root,MYF(0));
if (net->error && net->vio != 0) if (net->error && net->vio != 0)
{ {
if (!thd->killed && ! opt_warnings) if (!thd->killed && opt_warnings)
sql_print_error(ER(ER_NEW_ABORTING_CONNECTION), sql_print_error(ER(ER_NEW_ABORTING_CONNECTION),
thd->thread_id,(thd->db ? thd->db : "unconnected"), thd->thread_id,(thd->db ? thd->db : "unconnected"),
thd->user ? thd->user : "unauthenticated", thd->user ? thd->user : "unauthenticated",

View File

@ -599,7 +599,7 @@ mysqld_show_logs(THD *thd)
DBUG_RETURN(1); DBUG_RETURN(1);
#ifdef HAVE_BERKELEY_DB #ifdef HAVE_BERKELEY_DB
if (berkeley_show_logs(thd)) if (!berkeley_skip && berkeley_show_logs(thd))
DBUG_RETURN(-1); DBUG_RETURN(-1);
#endif #endif

View File

@ -114,7 +114,8 @@ int mysql_update(THD *thd,
select=make_select(table,0,0,conds,&error); select=make_select(table,0,0,conds,&error);
if (error || if (error ||
(select && select->check_quick(test(thd->options & SQL_SAFE_UPDATES), (select && select->check_quick(test(thd->options & SQL_SAFE_UPDATES),
limit))) limit)) ||
!limit)
{ {
delete select; delete select;
table->time_stamp=save_time_stamp; // Restore timestamp pointer table->time_stamp=save_time_stamp; // Restore timestamp pointer

View File

@ -18,6 +18,15 @@ Comments regarding the Package
mysql-server-debug: mysql-server-debug:
--with-debug flag. mysqld only. (/usr/sbin/mysqld-debug) --with-debug flag. mysqld only. (/usr/sbin/mysqld-debug)
* about MySQL-Max packages:
mysql-max :
this is static linked MySQL-Max server only. (/usr/sbin/mysqld-max-static).
mysql-max-shared:
this is dynamic linked MySQL server only. (/usr/sbin/mysqld-max-shared)
mysql-max-debug:
--with-debug flag. mysqld only. (/usr/sbin/mysqld-max-debug)
* about charset * about charset
I build MySQL server --with-extra-charsets=all I build MySQL server --with-extra-charsets=all

View File

@ -1,12 +1,145 @@
mysql (3.23.23-1potato.2) unstable; urgency=low mysql (3.23.39-1) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Sat, 12 May 2001 05:07:35 +0900
mysql (3.23.38-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Sat, 12 May 2001 05:07:35 +0900
mysql (3.23.37-1potato.2) unstable; urgency=low
* new
* add mysql-max multi packages.
-- takeshi <takeshi@softagency.co.jp> Thr, 26 Apr 2001 05:07:35 +0900
mysql (3.23.37-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Thr, 26 Apr 2001 05:07:35 +0900
mysql (3.23.36-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Thr, 29 Mar 2001 05:07:35 +0900
mysql (3.23.35-1potato.1) unstable; urgency=low
* sql fix patch
-- takeshi <takeshi@softagency.co.jp> Thr, 22 Mar 2001 05:07:35 +0900
mysql (3.23.35-1potato) unstable; urgency=low
* new
* --with-innobase
-- takeshi <takeshi@softagency.co.jp> Sat, 17 Mar 2001 05:07:35 +0900
mysql (3.23.34a-1potato) unstable; urgency=low
* new
* --with-innobase
-- takeshi <takeshi@softagency.co.jp> Wed, 14 Mar 2001 05:07:35 +0900
mysql (3.23.33-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Tue, 13 Feb 2001 05:07:35 +0900
mysql (3.23.32-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Tue, 23 Jan 2001 05:07:35 +0900
mysql (3.23.31-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Fri, 19 Jan 2001 05:07:35 +0900
mysql (3.23.30-gamma-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Sat, 6 Jan 2001 05:07:35 +0900
mysql (3.23.29a-gamma-1potato.3) unstable; urgency=low
* server:/usr/sbin/{mysql_config, mysqltest} -> client:/usr/bin/
* server:/usr/bin/my_print_defaults -> client:/usr/bin/
* /usr/mysql-test -> mysql-bench /var/mysql/mysql-test
-- takeshi <takeshi@softagency.co.jp> Fri, 29 Dec 2000 05:07:35 +0900
mysql (3.23.29a-gamma-1potato.2) unstable; urgency=low
* /usr/mysql-test -> mysql-bench /var/mysql/mysql-test
-- takeshi <takeshi@softagency.co.jp> Sun, 17 Dec 2000 05:07:35 +0900
mysql (3.23.29a-gamma-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Sun, 17 Dec 2000 05:07:35 +0900
mysql (3.23.28-gamma-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Fri, 24 Nov 2000 05:07:35 +0900
mysql (3.23.27-beta-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Fri, 28 Oct 2000 05:07:35 +0900
mysql (3.23.26-beta-1potato) unstable; urgency=low
* new
-- takeshi <takeshi@softagency.co.jp> Sun, 22 Oct 2000 05:07:35 +0900
mysql (3.23.25-beta-1potato) unstable; urgency=low
* new , libmysqlclient10
* change debian/control file. remove Provides keyword
-- takeshi <takeshi@softagency.co.jp> Fri, 29 Sep 2000 05:07:35 +0900
mysql (3.23.24-1potato.2) unstable; urgency=low
* fix debian/control file
* move patch into debian/patches/
if you want to make new patch,
write patch file and put it into debian/patches/.
debian/rules do patch debian/patches/* automatically.
* change debian/rules , debian/move
* back mysql_resolveip -> resolveip , mysql_perror -> perror
-- takeshi <takeshi@softagency.co.jp> Thr, 14 Sep 2000 05:07:35 +0900
mysql (3.23.24-1potato) unstable; urgency=low
* move patch into debian/patches/ * move patch into debian/patches/
if you want to make new patch, if you want to make new patch,
write patch file and put it into debian/patches/. write patch file and put it into debian/patches/.
debian/rules do patch debian/patches/* automatically. debian/rules do patch debian/patches/* automatically.
* change debian/rules , debian/move * change debian/rules , debian/move
* back mysql_resolveip -> resolveip , mysql_perror -> perror
-- takeshi <takeshi@softagency.co.jp> Tue, 5 Sep 2000 05:07:35 +0900 -- takeshi <takeshi@softagency.co.jp> Sat, 9 Sep 2000 05:07:35 +0900
mysql (3.23.23-1potato) unstable; urgency=low mysql (3.23.23-1potato) unstable; urgency=low

View File

@ -11,38 +11,44 @@ Description: mysql
Package: mysql-doc Package: mysql-doc
Architecture: all Architecture: all
Section: doc
Priority: extra
Replaces: mysql-gpl-doc
Description: mysql Documentation (html) Description: mysql Documentation (html)
MySQL Doc. MySQL Doc.
Package: libmysqlclient9 Package: libmysqlclient10
Architecture: any Architecture: any
Provides: libmysqlclient9 Section: libs
Description: libmysqlclient.so.9 Priority: extra
libmysqlclient.so.9 Description: libmysqlclient.so.10
libmysqlclient.so.10
Package: mysql-client Package: mysql-client
Architecture: any Architecture: any
Depends: ${shlibs:Depends} Depends: ${shlibs:Depends}
Section: devel Section: misc
Priority: extra Priority: extra
Conflicts: mysql-client-ujis, mysql-client-sjis Conflicts: mysql-client-ujis, mysql-client-sjis
Replaces: mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-client-ujis, mysql-client-sjis Replaces: mysql-gpl-client, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-client-ujis, mysql-client-sjis
Provides: mysql-client
Description: mysql clients. Description: mysql clients.
MySQL clients programs. MySQL clients programs.
Package: mysql-server Package: mysql-server
Architecture: any Architecture: any
Section: misc
Priority: extra
Depends: ${shlibs:Depends} Depends: ${shlibs:Depends}
Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0) Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0) Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0), mysql-common
Provides: mysql-server
Description: MySQL server (static linked) Description: MySQL server (static linked)
MySQL server. static linked. MySQL server. static linked.
Package: mysql-server-shared Package: mysql-server-shared
Architecture: any Architecture: any
Depends: ${shlibs:Depends} Section: misc
Priority: extra
Depends: mysql-server, ${shlibs:Depends}
Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0) Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0) Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Description: MySQL server (dynamic linked) Description: MySQL server (dynamic linked)
@ -50,22 +56,57 @@ Description: MySQL server (dynamic linked)
Package: mysql-server-debug Package: mysql-server-debug
Architecture: any Architecture: any
Depends: ${shlibs:Depends} Section: misc
Priority: extra
Depends: mysql-server, ${shlibs:Depends}
Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0) Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0) Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Description: MySQL server debug Description: MySQL server debug
MySQL server. debug MySQL server. debug
Package: mysql-max
Architecture: any
Section: misc
Priority: extra
Depends: mysql-server
Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Description: MySQL-MAX server (static linked)
MySQL-Max server. (static linked)
Package: mysql-max-shared
Architecture: any
Section: misc
Priority: extra
Depends: mysql-server, ${shlibs:Depends}
Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Description: MySQL-MAX server (shared linked)
MySQL-Max server. (shared linked)
Package: mysql-max-debug
Architecture: any
Section: misc
Priority: extra
Depends: mysql-server, ${shlibs:Depends}
Conflicts: mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Replaces: mysql-server-sjis, mysql-base (<< 3.22.11), mysql-base-ujis (<< 3.22.11), mysql-base-sjis (<< 3.22.11), mysql-server-sjis, mysql-server-ujis, mysql-server (<< 3.23.0)
Description: MySQL-MAX server (with debug shared linked)
MySQL-Max server. (with debug and shared linked)
Package: mysql-dev Package: mysql-dev
Architecture: any Architecture: any
Section: devel
Priority: extra
Depends: ${shlibs:Depends} Depends: ${shlibs:Depends}
Conflicts: mysql-dev-sjis, mysql-dev-ujis Conflicts: mysql-dev-sjis, mysql-dev-ujis
Replaces: mysql-dev-sjis, mysql-dev-ujis, libmysqlclient6-ujis, libmysqlclient6-sjis Replaces: mysql-devel, libmysqlclient10-dev, libmysqlclient9-dev, libmysqlclient6-dev, mysql-gpl-dev, mysql-dev-sjis, mysql-dev-ujis, libmysqlclient6-ujis, libmysqlclient6-sjis
Provides: mysql-dev
Description: MySQL develop suite Description: MySQL develop suite
MySQL develop. MySQL develop.
Package: mysql-bench Package: mysql-bench
Architecture: all Architecture: all
Section: misc
Priority: extra
Description: mysql benchmark suite. Description: mysql benchmark suite.
MySQL sql-bench files. MySQL sql-bench files.

View File

@ -1,14 +1,15 @@
Docs/Makefile Docs/Makefile
strings/Makefile
dbug/Makefile dbug/Makefile
mysys/Makefile
extra/Makefile extra/Makefile
regex/Makefile
isam/Makefile
heap/Makefile heap/Makefile
isam/Makefile
merge/Makefile merge/Makefile
mysys/Makefile
readline/Makefile
regex/Makefile
sql/Makefile sql/Makefile
sql/share/Makefile sql/share/Makefile
strings/Makefile
support-files/binary-configure support-files/binary-configure
support-files/my-example.cnf support-files/my-example.cnf
support-files/mysql-log-rotate support-files/mysql-log-rotate

View File

@ -0,0 +1 @@
usr/lib

View File

@ -0,0 +1,3 @@
#!/bin/sh
ldconfig

View File

@ -7,7 +7,7 @@ if [ -e $STAMPFILE ]; then
fi fi
#---------- #----------
CLIENT1="msql2mysql mysql mysql_convert_table_format mysql_find_rows mysql_fix_privilege_tables mysql_setpermission mysql_zap mysqlaccess mysqladmin mysqlbug mysqldump mysqlhotcopy mysqlimport mysqlshow" CLIENT1="msql2mysql mysql mysql_convert_table_format mysql_find_rows mysql_fix_privilege_tables mysql_setpermission mysql_zap mysqlaccess mysqladmin mysqlbug mysqldump mysqlhotcopy mysqlimport mysqlshow mysql_config mysqltest my_print_defaults"
# CLIENT2="add_file_priv add_func_table add_long_password make_binary_distribution" # CLIENT2="add_file_priv add_func_table add_long_password make_binary_distribution"
@ -20,7 +20,7 @@ for CHAR in build
do do
#----- #-----
cp -Rpd debian/${CHAR}/usr debian/mysql-server/ cp -Rpd debian/${CHAR}/usr debian/mysql-server/
cp -Rpd debian/${CHAR}-shared/usr/lib/mysql/libmysqlclient.so.* debian/libmysqlclient9/usr/lib/ cp -Rpd debian/${CHAR}-shared/usr/lib/mysql/libmysqlclient.so.* debian/libmysqlclient10/usr/lib/
#----- mysql-server-shared --- #----- mysql-server-shared ---
cp -Rpd debian/${CHAR}-shared/usr/sbin/mysqld debian/mysql-server-shared/usr/sbin/mysqld-shared cp -Rpd debian/${CHAR}-shared/usr/sbin/mysqld debian/mysql-server-shared/usr/sbin/mysqld-shared
@ -31,20 +31,28 @@ do
#----- mysql-server --- #----- mysql-server ---
mv debian/mysql-server/usr/sbin/mysqld debian/mysql-server/usr/sbin/mysqld-static mv debian/mysql-server/usr/sbin/mysqld debian/mysql-server/usr/sbin/mysqld-static
#----- mysql-max-shared ---
cp -Rpd debian/${CHAR}-max-shared/usr/sbin/mysqld debian/mysql-max-shared/usr/sbin/mysqld-max-shared
#----- mysql-max-debug ---
cp -Rpd debian/${CHAR}-max-debug/usr/sbin/mysqld debian/mysql-max-debug/usr/sbin/mysqld-max-debug
#----- mysql-max ---
mv debian/${CHAR}-max/usr/sbin/mysqld debian/mysql-max/usr/sbin/mysqld-max-static
#----- mysql-client ---- #----- mysql-client ----
cd ${P}/debian/mysql-server/usr/bin/ && mv $CLIENT1 ../../../mysql-client/usr/bin/ cd ${P}/debian/mysql-server/usr/bin/ && mv $CLIENT1 ../../../mysql-client/usr/bin/
cd ${P} cd ${P}
mv -f debian/mysql-server/usr/{man,info} debian/mysql-client/usr/share/ mv -f debian/mysql-server/usr/{man,info} debian/mysql-client/usr/share/
mv debian/mysql-server/usr/share/mysql/my-example.cnf debian/mysql-client/usr/share/mysql/ # mv debian/mysql-server/usr/share/mysql/my-*.cnf debian/mysql-client/usr/share/mysql/
mv -f debian/mysql-server/usr/bin/replace debian/mysql-client/usr/bin/mysql_replace mv -f debian/mysql-server/usr/bin/replace debian/mysql-client/usr/bin/mysql_replace
#----- mysql-server --- #----- mysql-server ---
mv debian/mysql-server/usr/bin/* debian/mysql-server/usr/sbin/ mv debian/mysql-server/usr/bin/* debian/mysql-server/usr/sbin/
mv debian/mysql-server/usr/sbin/my_print_defaults debian/mysql-server/usr/bin/
mv debian/mysql-server/usr/sbin/comp_err debian/mysql-server/usr/bin/ mv debian/mysql-server/usr/sbin/comp_err debian/mysql-server/usr/bin/
mv debian/mysql-server/usr/sbin/perror debian/mysql-server/usr/bin/mysql_perror mv debian/mysql-server/usr/sbin/perror debian/mysql-server/usr/bin/
mv debian/mysql-server/usr/sbin/resolveip debian/mysql-server/usr/bin/mysql_resolveip mv debian/mysql-server/usr/sbin/resolveip debian/mysql-server/usr/bin/
#----- mysql-dev ---- #----- mysql-dev ----
cp -Rpd debian/${CHAR}-shared/usr/lib/mysql/libmysqlclient.so debian/mysql-dev/usr/lib/ cp -Rpd debian/${CHAR}-shared/usr/lib/mysql/libmysqlclient.so debian/mysql-dev/usr/lib/
@ -67,6 +75,7 @@ cp -r COPYING* MIRRORS README* Docs/* debian/mysql-doc/usr/share/doc/mysql/
#### sql-bench #### sql-bench
mv debian/mysql-server/usr/sql-bench \ mv debian/mysql-server/usr/sql-bench \
debian/mysql-server/usr/mysql-test \
debian/mysql-bench/var/mysql/ debian/mysql-bench/var/mysql/
touch $STAMPFILE touch $STAMPFILE

View File

@ -0,0 +1 @@
usr/sbin

View File

@ -0,0 +1,3 @@
#!/bin/sh
update-alternatives --install /usr/sbin/mysqld mysqld /usr/sbin/mysqld-max-debug 40

View File

@ -0,0 +1,3 @@
#!/bin/sh
update-alternatives --auto mysqld

View File

@ -0,0 +1 @@
usr/sbin

View File

@ -0,0 +1,3 @@
#!/bin/sh
update-alternatives --install /usr/sbin/mysqld mysqld /usr/sbin/mysqld-max-shared 35

View File

@ -0,0 +1,3 @@
#!/bin/sh
update-alternatives --auto mysqld

View File

@ -0,0 +1 @@
usr/sbin

View File

@ -0,0 +1,3 @@
#!/bin/sh
update-alternatives --install /usr/sbin/mysqld mysqld /usr/sbin/mysqld-max-static 30

View File

@ -0,0 +1,3 @@
#!/bin/sh
update-alternatives --auto mysqld

View File

@ -1,20 +1,11 @@
--- mysql-3.23.23.orig/scripts/Makefile.in --- mysql-3.23.34a/sql/Makefile.in.orig Mon Mar 12 08:27:39 2001
+++ mysql-3.23.23/scripts/Makefile.in +++ mysql-3.23.34a/sql/Makefile.in Thu Mar 15 04:11:14 2001
@@ -337,6 +337,7 @@ @@ -373,7 +373,7 @@
@RM@ -f $@ $@-t
@SED@ \ mysqlbinlog: $(mysqlbinlog_OBJECTS) $(mysqlbinlog_DEPENDENCIES)
-e 's!@''bindir''@!$(bindir)!g' \ @rm -f mysqlbinlog
+ -e 's!@''sbindir''@!$(sbindir)!g' \ - $(CXXLINK) $(mysqlbinlog_LDFLAGS) $(mysqlbinlog_OBJECTS) $(mysqlbinlog_LDADD) $(LIBS)
-e 's!@''scriptdir''@!$(bindir)!g' \ + $(CXXLINK) $(mysqld_LDFLAGS) $(mysqlbinlog_OBJECTS) $(mysqld_LDADD) $(LIBS)
-e 's!@''prefix''@!$(prefix)!g' \
-e 's!@''datadir''@!$(datadir)!g' \ mysqld: $(mysqld_OBJECTS) $(mysqld_DEPENDENCIES)
--- mysql-3.23.23.orig/support-files/Makefile.in @rm -f mysqld
+++ mysql-3.23.23/support-files/Makefile.in
@@ -308,6 +308,7 @@
@RM@ -f $@ $@-t
@SED@ \
-e 's!@''bindir''@!$(bindir)!g' \
+ -e 's!@''sbindir''@!$(sbindir)!g' \
-e 's!@''scriptdir''@!$(bindir)!g' \
-e 's!@''prefix''@!$(prefix)!g' \
-e 's!@''datadir''@!$(datadir)!g' \

View File

@ -1,52 +1,11 @@
--- mysql-3.23.23.orig/scripts/mysql_install_db.sh --- mysql-3.23.34a/scripts/mysql_install_db.sh.orig Mon Mar 12 08:18:27 2001
+++ mysql-3.23.23/scripts/mysql_install_db.sh +++ mysql-3.23.34a/scripts/mysql_install_db.sh Thu Mar 15 04:12:28 2001
@@ -11,6 +11,7 @@ @@ -325,7 +325,7 @@
ldata=@localstatedir@ if test "$IN_RPM" -eq 0
execdir=@libexecdir@
bindir=@bindir@
+sbindir=@sbindir@
force=0
IN_RPM=0
defaults=
@@ -47,6 +48,10 @@
then then
bindir=`grep "^bindir" $conf | sed 's;^[^=]*=[ \t]*;;' | sed 's;[ \t]$;;'` echo "You can start the MySQL daemon with:"
fi
+ if grep "^sbindir" $conf >/dev/null
+ then
+ sbindir=`grep "^sbindir" $conf | sed '.*=[ \t]*//`
+ fi
if grep "^user" $conf >/dev/null
then
user=`grep "^user" $conf | sed 's;^[^=]*=[ \t]*;;' | sed 's;[ \t]$;;'`
@@ -56,7 +61,7 @@
for arg
do
case "$arg" in
- --basedir=*) basedir=`echo "$arg"|sed 's;^--basedir=;;'`; bindir="$basedir/bin"; execdir="$basedir/libexec" ;;
+ --basedir=*) basedir=`echo "$arg"|sed 's;^--basedir=;;'`; bindir="$basedir/bin"; sbindir="$basedir/sbin"; execdir="$basedir/libexec" ;;
--datadir=*) ldata=`echo "$arg"|sed 's;^--datadir=;;'` ;;
--user=*) user=`echo "$arg"|sed 's;^--user=;;'` ;;
esac
@@ -82,10 +87,10 @@
# Check if hostname is valid
if test "$IN_RPM" -eq 0 -a $force -eq 0
then
- resolved=`$bindir/resolveip $hostname 2>&1`
+ resolved=`$bindir/mysql_resolveip $hostname 2>&1`
if [ $? -ne 0 ]
then
- resolved=`$bindir/resolveip localhost 2>&1`
+ resolved=`$bindir/mysql_resolveip localhost 2>&1`
if [ $? -eq 0 ]
then
echo "Sorry, the host '$hostname' could not be looked up."
@@ -300,7 +305,7 @@
if test -z "$IN_RPM"
then
echo "You can start the MySQL demon with:"
- echo "cd @prefix@ ; $bindir/safe_mysqld &" - echo "cd @prefix@ ; $bindir/safe_mysqld &"
+ echo "cd @prefix@ ; $sbindir/safe_mysqld &" + echo "cd @prefix@ ; $sbindir/safe_mysqld &"
echo echo
echo "You can test the MySQL demon with the benchmarks in the 'sql-bench' directory:" echo "You can test the MySQL daemon with the benchmarks in the 'sql-bench' directory:"
echo "cd sql-bench ; run-all-tests" echo "cd sql-bench ; run-all-tests"

View File

@ -1,25 +1,17 @@
--- mysql-3.23.23.orig/support-files/mysql.server.sh Tue Sep 5 19:13:35 2000 --- mysql-3.23.30-gamma/support-files/mysql.server.sh.orig Thu Jan 4 11:03:57 2001
+++ mysql-3.23.23/support-files/mysql.server.sh Tue Sep 5 19:19:40 2000 +++ mysql-3.23.30-gamma/support-files/mysql.server.sh Sat Jan 6 12:18:50 2001
@@ -16,6 +16,7 @@ @@ -28,8 +28,10 @@
PATH=/sbin:/usr/sbin:/bin:/usr/bin then
basedir=@prefix@ basedir=@prefix@
bindir=@bindir@ bindir=@bindir@
+ sbindir=@sbindir@ + sbindir=@sbindir@
datadir=@localstatedir@ else
pid_file=@localstatedir@/mysqld.pid bindir="$basedir/bin"
log_file=@localstatedir@/mysqld.log + sbindir="$basedir/sbin"
@@ -64,6 +65,10 @@
then
bindir=`grep "^bindir" $conf | cut -f 2 -d= | tr -d ' '`
fi fi
+ if grep "^sbindir" $conf >/dev/null if test -z "$pid_file"
+ then
+ sbindir=`grep "^sbindir" $conf | cut -f 2 -d= | tr -d ' '`
+ fi
if grep "^log[ \t]*=" $conf >/dev/null
then then
log_file=`grep "log[ \t]*=" $conf | cut -f 2 -d= | tr -d ' '` @@ -100,18 +102,18 @@
@@ -78,14 +83,15 @@
'start') 'start')
# Start daemon # Start daemon
@ -28,11 +20,13 @@
then then
# Give extra arguments to mysqld with the my.cnf file. This script may # Give extra arguments to mysqld with the my.cnf file. This script may
# be overwritten at next upgrade. # be overwritten at next upgrade.
- $bindir/safe_mysqld \ - $bindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file &
- --user=$mysql_daemon_user --datadir=$datadir --pid-file=$pid_file --log=$log_file & + $sbindir/safe_mysqld --datadir=$datadir --pid-file=$pid_file &
+ $sbindir/safe_mysqld \ # Make lock for RedHat / SuSE
+ --user=$mysql_daemon_user --datadir=$datadir --pid-file=$pid_file & if test -w /var/lock/subsys
+# --log=$log_file & then
touch /var/lock/subsys/mysql
fi
else else
- echo "Can't execute $bindir/safe_mysqld" - echo "Can't execute $bindir/safe_mysqld"
+ echo "Can't execute $sbindir/safe_mysqld" + echo "Can't execute $sbindir/safe_mysqld"

View File

@ -0,0 +1,68 @@
--- mysql-3.23.34a/mysql-test/install_test_db.sh.orig Mon Mar 12 08:18:24 2001
+++ mysql-3.23.34a/mysql-test/install_test_db.sh Thu Mar 15 04:11:14 2001
@@ -5,6 +5,15 @@
# This scripts creates the privilege tables db, host, user, tables_priv,
# columns_priv in the mysql database, as well as the func table.
+if [ x$1 = x"-debian" ]; then
+ DEBIAN=1
+ shift 1
+ execdir=/usr/sbin
+ bindir=/usr/bin
+ BINARY_DIST=1
+ fix_bin=/var/mysql/mysql-test
+else
+
if [ x$1 = x"-bin" ]; then
shift 1
execdir=../bin
@@ -17,6 +26,10 @@
fix_bin=.
fi
+fi
+
+
+
vardir=var
logdir=$vardir/log
if [ x$1 = x"-slave" ]
@@ -47,12 +60,17 @@
#create the directories
[ -d $vardir ] || mkdir $vardir
[ -d $logdir ] || mkdir $logdir
+[ "x$RUN_USER" != "x" ] && chown -R $RUN_USER $logdir
# Create database directories mysql & test
if [ -d $data ] ; then rm -rf $data ; fi
mkdir $data $data/mysql $data/test
#for error messages
+if [ "x$DEBIAN" = "x1" ]; then
+ basedir=/usr
+else
+
if [ x$BINARY_DIST = x1 ] ; then
basedir=..
else
@@ -62,6 +80,10 @@
ln -sf ../../sql/share share/mysql
fi
+fi
+
+
+
# Initialize variables
c_d="" i_d=""
c_h="" i_h=""
@@ -211,7 +233,9 @@
$c_c
END_OF_DATA
then
+ [ "x$RUN_USER" != "x" ] && chown -R $RUN_USER $ldata
exit 0
else
+ [ "x$RUN_USER" != "x" ] && chown -R $RUN_USER $ldata
exit 1
fi

View File

@ -0,0 +1,86 @@
--- mysql-3.23.34a/mysql-test/mysql-test-run.sh.orig Mon Mar 12 08:18:27 2001
+++ mysql-3.23.34a/mysql-test/mysql-test-run.sh Thu Mar 15 04:11:14 2001
@@ -37,9 +37,23 @@
XARGS=`which xargs | head -1`
SED=sed
+if [ $USER = root ]; then
+ RUN_USER="mysql"
+ RUN_USER_OPT="--user=$RUN_USER"
+ export RUN_USER
+fi
+
+
# Are we using a source or a binary distribution?
testdir=@testdir@
+
+if [ -d /var/mysql/mysql-test ]; then
+ DEBIAN=1
+ cd /var/mysql/mysql-test
+ testdir=/var/mysql
+fi
+
if [ -d bin/mysqld ] && [ -d mysql-test ] ; then
cd mysql-test
else
@@ -56,6 +70,10 @@
exit 1
fi
+if [ x$DEBIAN = x1 ]; then
+ MY_BASEDIR=/usr
+fi
+
#++
# Misc. Definitions
#--
@@ -184,12 +202,21 @@
[ -d $MYSQL_TEST_DIR/var ] || mkdir $MYSQL_TEST_DIR/var
[ -d $MYSQL_TEST_DIR/var/tmp ] || mkdir $MYSQL_TEST_DIR/var/tmp
[ -d $MYSQL_TEST_DIR/var/run ] || mkdir $MYSQL_TEST_DIR/var/run
+[ -d $MYSQL_TEST_DIR -a "x$RUN_USER" != "x" ] && chown -R $RUN_USER $MYSQL_TEST_DIR
[ -z "$COLUMNS" ] && COLUMNS=80
E=`$EXPR $COLUMNS - 8`
#DASH72=`expr substr '------------------------------------------------------------------------' 1 $E`
DASH72=`$ECHO '------------------------------------------------------------------------'|$CUT -c 1-$E`
+if [ "x$DEBIAN" = "x1" ]; then
+ MYSQLD="/usr/sbin/mysqld"
+ MYSQL_TEST="/usr/sbin/mysqltest"
+ MYSQLADMIN="/usr/bin/mysqladmin"
+ INSTALL_DB="/var/mysql/mysql-test/install_test_db -debian"
+
+else
+
# on source dist, we pick up freshly build executables
# on binary, use what is installed
if [ x$SOURCE_DIST = x1 ] ; then
@@ -250,6 +277,8 @@
read unused
}
+fi
+
error () {
$ECHO "Error: $1"
@@ -365,7 +394,7 @@
--language=english \
--innobase_data_file_path=ibdata1:50M \
$SMALL_SERVER \
- $EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT"
+ $RUN_USER_OPT $EXTRA_MASTER_OPT $EXTRA_MASTER_MYSQLD_OPT"
if [ x$DO_DDD = x1 ]
then
$ECHO "set args $master_args" > $GDB_MASTER_INIT
@@ -420,7 +449,7 @@
--language=english \
--skip-innobase \
$SMALL_SERVER \
- $EXTRA_SLAVE_OPT $EXTRA_SLAVE_MYSQLD_OPT"
+ $RUN_USER_OPT $EXTRA_SLAVE_OPT $EXTRA_SLAVE_MYSQLD_OPT"
if [ x$DO_DDD = x1 ]
then
$ECHO "set args $master_args" > $GDB_SLAVE_INIT

View File

@ -4,6 +4,8 @@
package=mysql package=mysql
CHARSET=ujis CHARSET=ujis
SYSNAME=
TEMPINST=build TEMPINST=build
# CFLAGS="-O6 -mpentium -mstack-align-double -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -mpentium -mstack-align-double -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static # CFLAGS="-O6 -mpentium -mstack-align-double -fomit-frame-pointer" CXX=gcc CXXFLAGS="-O6 -mpentium -mstack-align-double -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti" ./configure --prefix=/usr/local/mysql --enable-assembler --with-mysqld-ldflags=-all-static
@ -14,7 +16,6 @@ CXX=gcc
CXXFLAGS=-O6 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti CXXFLAGS=-O6 -fomit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti
# CXXFLAGS=-O6 -fomit-frame-pointer -felide-constructors -fno-rtti # CXXFLAGS=-O6 -fomit-frame-pointer -felide-constructors -fno-rtti
SYSNAME=
COMMONCONF= --prefix=/usr --libexecdir=/usr/sbin \ COMMONCONF= --prefix=/usr --libexecdir=/usr/sbin \
--localstatedir=/var/mysql/data \ --localstatedir=/var/mysql/data \
--enable-shared \ --enable-shared \
@ -26,8 +27,14 @@ COMMONCONF= --prefix=/usr --libexecdir=/usr/sbin \
SERVERCONF=$(COMMONCONF) --enable-assembler \ SERVERCONF=$(COMMONCONF) --enable-assembler \
--with-raid --with-raid
MYSQLMAXCONF= --with-server-suffix=-Max \
--with-innodb \
--with-berkeley-db
# --with-gemini \
# --with-berkeley-db-includes=/usr/include/db3 \ # --with-berkeley-db-includes=/usr/include/db3 \
# --with-berkeley-db-libs=/usr/lib/libdb3.a # --with-berkeley-db-libs=/usr/lib
STATICCONF=--with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static STATICCONF=--with-mysqld-ldflags=-all-static --with-client-ldflags=-all-static
@ -37,6 +44,7 @@ CLIENTCONF=$(COMMONCONF) --without-server
patches debian/stamp-patches: patches debian/stamp-patches:
-test -e debian/stamp-patches || \ -test -e debian/stamp-patches || \
for i in `find debian/patches -type f -print` ; do \ for i in `find debian/patches -type f -print` ; do \
echo "==== $$i ====" ; \
patch -p1 < $$i ; \ patch -p1 < $$i ; \
done done
touch debian/stamp-patches touch debian/stamp-patches
@ -46,9 +54,15 @@ premkdir debian/stamp-premkdir:
$(checkdir) $(checkdir)
-rm -rf debian/tmp debian/$(TEMPINST)* -rm -rf debian/tmp debian/$(TEMPINST)*
dh_installdirs dh_installdirs
-install -d debian/$(TEMPINST)/usr/{bin,sbin,share,man,include,info}
-install -d debian/$(TEMPINST)-shared/usr/{bin,sbin,share,man,include,info} for i in '' -shared -debug -max -max-shared -max-debug ; do \
-install -d debian/$(TEMPINST)-debug/usr/{bin,sbin,share,man,include,info} install -d debian/$(TEMPINST)$${i}/usr/{bin,sbin,share,man,include,info} ; \
done
# -install -d debian/$(TEMPINST)$${i}/usr/{bin,sbin,share,man,include,info}
# -install -d debian/$(TEMPINST)-shared/usr/{bin,sbin,share,man,include,info}
# -install -d debian/$(TEMPINST)-debug/usr/{bin,sbin,share,man,include,info}
touch debian/stamp-premkdir touch debian/stamp-premkdir
################################################## ##################################################
@ -59,6 +73,7 @@ config debian/stamp-config: debian/stamp-premkdir debian/stamp-patches
--with-charset=$(CHARSET) \ --with-charset=$(CHARSET) \
--with-bench \ --with-bench \
$(SYSNAME) $(SYSNAME)
# sed 's/-fno-implicit-templates//g' sql/Makefile > .m # sed 's/-fno-implicit-templates//g' sql/Makefile > .m
# mv .m sql/Makefile # mv .m sql/Makefile
touch debian/stamp-config touch debian/stamp-config
@ -101,6 +116,51 @@ build-debug debian/stamp-build-debug: debian/stamp-patches
touch debian/stamp-build-debug touch debian/stamp-build-debug
##################################################
debian/stamp-mysql-max: debian/stamp-mysql-max-static debian/stamp-mysql-max-shared debian/stamp-mysql-max-debug
debian/stamp-mysql-max-static: debian/stamp-premkdir debian/stamp-patches
-make distclean
CC=$(CC) CFLAGS="$(CFLAGS)" CXX=$(CXX) CXXFLAGS="$(CXXFLAGS)" \
./configure $(SERVERCONF) $(STATICCONF) \
$(MYSQLMAXCONF) \
--with-charset=$(CHARSET) \
$(SYSNAME)
make LDFLAGS="-static"
make install DESTDIR=`pwd`/debian/$(TEMPINST)-max
touch debian/stamp-mysql-max-static
debian/stamp-mysql-max-shared: debian/stamp-premkdir debian/stamp-patches
-make distclean
CC=$(CC) CFLAGS="$(CFLAGS)" CXX=$(CXX) CXXFLAGS="$(CXXFLAGS)" \
./configure $(SERVERCONF) \
$(MYSQLMAXCONF) \
--with-charset=$(CHARSET) \
$(SYSNAME)
make
make install DESTDIR=`pwd`/debian/$(TEMPINST)-max-shared
touch debian/stamp-mysql-max-shared
debian/stamp-mysql-max-debug: debian/stamp-premkdir debian/stamp-patches
-make distclean
CC=$(CC) CFLAGS="$(CFLAGS)" CXX=$(CXX) CXXFLAGS="$(CXXFLAGS)" \
./configure $(SERVERCONF) \
$(MYSQLMAXCONF) \
--with-charset=$(CHARSET) \
--with-debug \
$(SYSNAME)
make
make install DESTDIR=`pwd`/debian/$(TEMPINST)-max-debug
touch debian/stamp-mysql-max-debug
################################################## ##################################################
clean: clean:
$(checkdir) $(checkdir)
@ -123,12 +183,12 @@ binary-indep: checkroot build
# generated by this package. If there were any they would be # generated by this package. If there were any they would be
# made here. # made here.
binary-arch: checkroot build debian/stamp-build-shared debian/stamp-build-debug binary-arch: checkroot build debian/stamp-build-shared debian/stamp-build-debug debian/stamp-mysql-max
sh debian/move sh debian/move
### init, post* ### init, post*
dh_installdeb dh_installdeb
cp debian/shlibs debian/libmysqlclient9/DEBIAN/ cp debian/shlibs debian/libmysqlclient10/DEBIAN/
cp debian/my.cnf debian/mysql-server/etc/ cp debian/my.cnf debian/mysql-server/etc/
cp support-files/mysql.server debian/mysql-server/etc/init.d/mysql ; chmod +x debian/mysql-server/etc/init.d/mysql cp support-files/mysql.server debian/mysql-server/etc/init.d/mysql ; chmod +x debian/mysql-server/etc/init.d/mysql
@ -143,7 +203,7 @@ binary-arch: checkroot build debian/stamp-build-shared debian/stamp-build-debug
dh_shlibdeps dh_shlibdeps
dh_gencontrol dh_gencontrol
dpkg --build debian/libmysqlclient9 .. dpkg --build debian/libmysqlclient10 ..
dpkg --build debian/mysql-client .. dpkg --build debian/mysql-client ..
dpkg --build debian/mysql-server .. dpkg --build debian/mysql-server ..
dpkg --build debian/mysql-server-shared .. dpkg --build debian/mysql-server-shared ..
@ -151,6 +211,9 @@ binary-arch: checkroot build debian/stamp-build-shared debian/stamp-build-debug
dpkg --build debian/mysql-dev .. dpkg --build debian/mysql-dev ..
dpkg --build debian/mysql-bench .. dpkg --build debian/mysql-bench ..
dpkg --build debian/mysql-doc .. dpkg --build debian/mysql-doc ..
dpkg --build debian/mysql-max ..
dpkg --build debian/mysql-max-shared ..
dpkg --build debian/mysql-max-debug ..
define checkdir define checkdir
test -f debian/rules test -f debian/rules

View File

@ -1 +1 @@
libmysqlclient 9 libmysqlclient9 libmysqlclient 10 libmysqlclient10

View File

@ -6,6 +6,9 @@
# the last 3 does different selects on the tables. # the last 3 does different selects on the tables.
# Er, hmmm..., something like that :^) # Er, hmmm..., something like that :^)
# Modified to do crazy-join, <20> la Nasdaq. # Modified to do crazy-join, <20> la Nasdaq.
#
# This test uses the old obsolete mysql interface. For a test that uses
# DBI, please take a look at fork_big.pl
$opt_loop_count=10000; # Change this to make test harder/easier $opt_loop_count=10000; # Change this to make test harder/easier
@ -26,8 +29,8 @@ GetOptions("host=s","db=s","loop-count=i","skip-create","skip-in",
"force") || die "Aborted"; "force") || die "Aborted";
$opt_verbose=$opt_debug=$opt_lock_tables=$opt_fast_insert=$opt_fast=$opt_skip_in=$Mysql::db_errstr=$opt_force=undef; # Ignore warnings from these $opt_verbose=$opt_debug=$opt_lock_tables=$opt_fast_insert=$opt_fast=$opt_skip_in=$Mysql::db_errstr=$opt_force=undef; # Ignore warnings from these
print "Testing 9 multiple connections to a server with 1 insert/update\n"; print "Testing 10 multiple connections to a server with 1 insert/update\n";
print "and 8 select connections.\n"; print "and 8 select connections and one ALTER TABLE.\n";
@testtables = qw(bench_f21 bench_f22 bench_f23 bench_f24 bench_f25); @testtables = qw(bench_f21 bench_f22 bench_f23 bench_f24 bench_f25);
@ -83,6 +86,7 @@ test_2() if (($pid=fork()) == 0); $work{$pid}="simple3";
test_3() if (($pid=fork()) == 0); $work{$pid}="funny3"; test_3() if (($pid=fork()) == 0); $work{$pid}="funny3";
test_2() if (($pid=fork()) == 0); $work{$pid}="simple4"; test_2() if (($pid=fork()) == 0); $work{$pid}="simple4";
test_3() if (($pid=fork()) == 0); $work{$pid}="funny4"; test_3() if (($pid=fork()) == 0); $work{$pid}="funny4";
alter_test() if (($pid=fork()) == 0); $work{$pid}="alter";
$errors=0; $errors=0;
while (($pid=wait()) != -1) while (($pid=wait()) != -1)
@ -205,6 +209,33 @@ sub test_3
exit(0); exit(0);
} }
#
# Do an ALTER TABLE every 20 seconds
#
sub alter_test
{
my ($dbh,$count,$old_row_count,$row_count,$id,@row,$sth);
$dbh = Mysql->Connect($opt_host, $opt_db) || die $Mysql::db_errstr;
$id=$count=$row_count=0; $old_row_count= -1;
# Execute the test as long as we get more data into the table
while ($row_count != $old_row_count)
{
sleep(10);
$sth=$dbh->Query("ALTER TABLE $testtables[$id] modify info varchar(32)") or die "Couldn't execute ALTER TABLE\n";
$sth=0;
$id=($id+1) % $numtables;
# Test if insert test has ended
$sth=$dbh->query("select count(*) from $testtables[0]") or die "Couldn't execute count(*)\n";
@row = $sth->FetchRow();
$old_row_count= $row_count;
$row_count=$row[0];
$count++;
}
$dbh=0;
print "alter: Executed $count ALTER TABLE commands\n";
exit(0);
}

View File

@ -23,7 +23,7 @@ GetOptions("host=s","db=s","user=s","password=s","loop-count=i","skip-create","s
$opt_verbose=$opt_debug=$opt_lock_tables=$opt_fast_insert=$opt_fast=$opt_skip_in=$opt_force=undef; # Ignore warnings from these $opt_verbose=$opt_debug=$opt_lock_tables=$opt_fast_insert=$opt_fast=$opt_skip_in=$opt_force=undef; # Ignore warnings from these
print "Test of multiple connections that test the following things:\n"; print "Test of multiple connections that test the following things:\n";
print "insert, select, delete, update, check, repair and flush\n"; print "insert, select, delete, update, alter, check, repair and flush\n";
@testtables = ( ["bench_f31", ""], @testtables = ( ["bench_f31", ""],
["bench_f32", "row_format=fixed"], ["bench_f32", "row_format=fixed"],
@ -34,6 +34,7 @@ $abort_table="bench_f39";
$numtables = $#testtables+1; $numtables = $#testtables+1;
srand 100; # Make random numbers repeatable srand 100; # Make random numbers repeatable
#### ####
#### Start timeing and start test #### Start timeing and start test
#### ####
@ -88,12 +89,14 @@ for ($i=0 ; $i < $opt_threads ; $i ++)
{ {
test_select() if (($pid=fork()) == 0); $work{$pid}="select_key"; test_select() if (($pid=fork()) == 0); $work{$pid}="select_key";
} }
test_join() if (($pid=fork()) == 0); $work{$pid}="test_join";
test_select_count() if (($pid=fork()) == 0); $work{$pid}="select_count"; test_select_count() if (($pid=fork()) == 0); $work{$pid}="select_count";
test_delete() if (($pid=fork()) == 0); $work{$pid}="delete"; test_delete() if (($pid=fork()) == 0); $work{$pid}="delete";
test_update() if (($pid=fork()) == 0); $work{$pid}="update"; test_update() if (($pid=fork()) == 0); $work{$pid}="update";
test_flush() if (($pid=fork()) == 0); $work{$pid}= "flush"; test_flush() if (($pid=fork()) == 0); $work{$pid}= "flush";
test_check() if (($pid=fork()) == 0); $work{$pid}="check"; test_check() if (($pid=fork()) == 0); $work{$pid}="check";
test_repair() if (($pid=fork()) == 0); $work{$pid}="repair"; test_repair() if (($pid=fork()) == 0); $work{$pid}="repair";
test_alter() if (($pid=fork()) == 0); $work{$pid}="alter";
#test_database("test2") if (($pid=fork()) == 0); $work{$pid}="check_database"; #test_database("test2") if (($pid=fork()) == 0); $work{$pid}="check_database";
print "Started " . ($opt_threads*2+4) . " threads\n"; print "Started " . ($opt_threads*2+4) . " threads\n";
@ -243,6 +246,44 @@ sub test_select_count
exit(0); exit(0);
} }
#
# select records
# Do continously joins between the first and second table
#
sub test_join
{
my ($dbh, $i, $j, $count, $loop);
$dbh = DBI->connect("DBI:mysql:$opt_db:$opt_host",
$opt_user, $opt_password,
{ PrintError => 0}) || die $DBI::errstr;
$count_query=make_count_query($numtables);
$count=0;
$loop=9999;
$i=0;
while (($i++ % 100) || !test_if_abort($dbh))
{
if ($loop++ >= 100)
{
$loop=0;
$row_counts=simple_query($dbh, $count_query);
}
for ($j=0 ; $j < $numtables-1 ; $j++)
{
my ($id)= int rand $row_counts->[$j];
my ($t1,$t2)= ($testtables[$j]->[0],$testtables[$j+1]->[0]);
simple_query($dbh, "select $t1.id,$t2.info from $t1, $t2 where $t1.id=$t2.id and $t1.id=$id");
$count++;
}
}
$dbh->disconnect; $dbh=0;
print "Test_join: Executed $count joins\n";
exit(0);
}
# #
# Delete 1-5 rows from the first 2 tables. # Delete 1-5 rows from the first 2 tables.
# Test ends when the number of rows for table 3 didn't change during # Test ends when the number of rows for table 3 didn't change during
@ -457,6 +498,29 @@ sub test_database
exit(0); exit(0);
} }
#
# Test ALTER TABLE on the second table
#
sub test_alter
{
my ($dbh, $row, $i, $type, $table);
$dbh = DBI->connect("DBI:mysql:$opt_db:$opt_host",
$opt_user, $opt_password,
{ PrintError => 0}) || die $DBI::errstr;
for ($i=0 ; !test_if_abort($dbh) ; $i++)
{
sleep(100);
$table=$testtables[1]->[0];
$sth=$dbh->prepare("ALTER table $table modify info char(32)") || die "Got error on prepare: $DBI::errstr\n";
$sth->execute || die $DBI::errstr;
}
$dbh->disconnect; $dbh=0;
print "test_alter: Executed $i ALTER TABLE\n";
exit(0);
}
# #
# Help functions # Help functions
@ -507,8 +571,8 @@ sub simple_query()
my ($dbh, $query)= @_; my ($dbh, $query)= @_;
my ($sth,$row); my ($sth,$row);
$sth=$dbh->prepare($query) || die "Got error on '$query': $DBI::errstr\n"; $sth=$dbh->prepare($query) || die "Got error on '$query': " . $dbh->errstr . "\n";
$sth->execute || die "Got error on '$query': $dbh->errstr\n"; $sth->execute || die "Got error on '$query': " . $dbh->errstr . "\n";
$row= $sth->fetchrow_arrayref(); $row= $sth->fetchrow_arrayref();
$sth=0; $sth=0;
return $row; return $row;