diff options
48 files changed, 774 insertions, 328 deletions
diff --git a/Docs/manual.texi b/Docs/manual.texi index b845b6042bf..33eaeab83e4 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -333,7 +333,7 @@ Functionality Missing from MySQL Foreign Keys -* Broken Foreign KEY:: Reasons NOT to use foreign keys +* Broken Foreign KEY:: Reasons NOT to use foreign keys constraints The MySQL Access Privilege System @@ -837,7 +837,7 @@ Changes in release 3.23.x (Recommended; beta) * News-3.23.4:: Changes in release 3.23.4 * News-3.23.3:: Changes in release 3.23.3 * News-3.23.2:: Changes in release 3.23.2 -* News-3.23.1:: Changes in release 3.23.1 +* News-3.23.1:: * News-3.23.0:: Changes in release 3.23.0 Changes in release 3.22.x @@ -10171,9 +10171,9 @@ To see when @strong{MySQL} might get stored procedures, see @ref{TODO}. @cindex keys, foreign Note that foreign keys in SQL are not used to join tables, but are used -mostly for checking referential integrity. If you want to get results from -multiple tables from a @code{SELECT} statement, you do this by joining -tables: +mostly for checking referential integrity (foreign key constraints). If +you want to get results from multiple tables from a @code{SELECT} +statement, you do this by joining tables: @example SELECT * from table1,table2 where table1.id = table2.id; @@ -10200,29 +10200,33 @@ than using foreign keys. In the near future we will extend the @code{FOREIGN KEY} implementation so that at least the information will be saved in the table specification file -and may be retrieved by @code{mysqldump} and ODBC. +and may be retrieved by @code{mysqldump} and ODBC. At a later stage we will +implement the foreign key constraints for application that can't easily be +coded to avoid them. @menu -* Broken Foreign KEY:: Reasons NOT to use foreign keys +* Broken Foreign KEY:: Reasons NOT to use foreign keys constraints @end menu @node Broken Foreign KEY, , Missing Foreign Keys, Missing Foreign Keys -@subsubsection Reasons NOT to Use Foreign Keys +@subsubsection Reasons NOT to Use Foreign Keys constraints @cindex foreign keys, reasons not to use -There are so many problems with foreign keys that we don't +There are so many problems with foreign key constraints that we don't know where to start: @itemize @bullet @item -Foreign keys make life very complicated, because the foreign key definitions -must be stored in a database and implementing them would destroy the whole -``nice approach'' of using files that can be moved, copied, and removed. +Foreign key constraints make life very complicated, because the foreign +key definitions must be stored in a database and implementing them would +destroy the whole ``nice approach'' of using files that can be moved, +copied, and removed. @item -The speed impact is terrible for @code{INSERT} and @code{UPDATE} statements, -and in this case almost all @code{FOREIGN KEY} checks are useless because you -usually insert records in the right tables in the right order, anyway. +The speed impact is terrible for @code{INSERT} and @code{UPDATE} +statements, and in this case almost all @code{FOREIGN KEY} constraint +checks are useless because you usually insert records in the right +tables in the right order, anyway. @item There is also a need to hold locks on many more tables when updating one @@ -10231,12 +10235,12 @@ MUCH faster to delete records from one table first and subsequently delete them from the other tables. @item -You can no longer restore a table by doing a full delete from -the table and then restoring all records (from a new source or from a backup). +You can no longer restore a table by doing a full delete from the table +and then restoring all records (from a new source or from a backup). @item -If you have foreign keys you can't dump and restore tables unless you do so -in a very specific order. +If you use foreign key constraints you can't dump and restore tables +unless you do so in a very specific order. @item It's very easy to do ``allowed'' circular definitions that make the @@ -10248,9 +10252,11 @@ The only nice aspect of @code{FOREIGN KEY} is that it gives ODBC and some other client programs the ability to see how a table is connected and to use this to show connection diagrams and to help in building applicatons. -@strong{MySQL} will soon store @code{FOREIGN KEY} definitions so that -a client can ask for and receive an answer about how the original connection -was made. The current @file{.frm} file format does not have any place for it. +@strong{MySQL} will soon store @code{FOREIGN KEY} definitions so that a +client can ask for and receive an answer about how the original +connection was made. The current @file{.frm} file format does not have +any place for it. At a later stage we will implement the foreign key +constraints for application that can't easily be coded to avoid them. @node Missing Views, Missing comments, Missing Foreign Keys, Missing functions @subsection Views @@ -32254,10 +32260,12 @@ this program! When started with the @code{--log-slow-queries[=file_name]} option, @code{mysqld} writes a log file containing all SQL commands that took -more than @code{long_query_time} to execute. If no file name is -given, it defaults to the name of the host machine suffixed with -@code{-slow.log}. If a file name is given, but doesn't contain a path, -the file is written in the data directory. +more than @code{long_query_time} to execute. The time to get the initial +table locks are not counted as execution time. + +If no file name is given, it defaults to the name of the host machine +suffixed with @code{-slow.log}. If a file name is given, but doesn't +contain a path, the file is written in the data directory. The slow query log can be used to find queries that takes a long time to execute and are thus candidates for optimization. @@ -37068,7 +37076,7 @@ Python module with caching. By @email{gandalf@@rosmail.com}. @item @uref{http://www.mysql.com/Downloads/Contrib/MySQLmodule-1.4.tar.gz, MySQLmodule-1.4.tar.gz} Python interface for @strong{MySQL}. By Joseph Skinner @email{joe@@earthlight.co.nz}; Modified by Joerg Senekowitsch @email{senekow@@ibm.net} -@item @uref{http://www.mysql.com/Downloads/Contrib/mysql_mex_1_1b.tar.gz, mysql_mex_1_1b.tar.gz} +@item @uref{http://www.mysql.com/Downloads/Contrib/mysql_mex_11.tar.gz, mysql_mex_1_11.tar.gz} An interface program for the Matlab program by MathWorks. The interface is done by Kimmo Uutela and John Fisher (not by Mathworks). Check @uref{http://boojum.hut.fi/~kuutela/mysqlmex.html,mysqlmex.html} @@ -37341,10 +37349,10 @@ Accounting. By Jose de Leon, @email{jdl@@thevision.net} Apache authentication module for @strong{MySQL}. By Zeev Suraski, @email{bourbon@@netvision.net.il}. -@strong{Please} register this module at: -@url{http://bourbon.netvision.net.il/mysql/mod_auth_mysql/register.html}. The -registering information is only used for statistical purposes and will -encourage further development of this module! +@c @strong{Please} register this module at: +@c @url{http://bourbon.netvision.net.il/mysql/mod_auth_mysql/register.html}. The +@c registering information is only used for statistical purposes and will +@c encourage further development of this module! @item @uref{http://www.mysql.com/Downloads/Contrib/mod_log_mysql-1.05.tar.gz, mod_log_mysql-1.05.tar.gz} @strong{MySQL} logging module for Apache. By Zeev Suraski, @@ -37495,6 +37503,7 @@ Prints the structure of every table in a database. By Thomas Wana. @item @uref{http://www.mysql.com/Downloads/Contrib/mysqlsync, mysqlsync-1.0-alpha.tar.gz}. A perl script to keep remote copies of a @strong{MySQL} database in sync with a central master copy. By Mark Jeftovic. @email{markjr@@easydns.com} + @item @uref{http://www.mysql.com/Downloads/Contrib/MySQLTutor-0.2.tar.gz, MySQLTutor}. MySQLTutor. A tutor of @strong{MySQL} for beginners @@ -37516,6 +37525,9 @@ By Elizabeth. @item @uref{http://www.mysql.com/Downloads/Contrib/mybackup} @item @uref{http://www.mswanson.com/mybackup, mybackup home page} Wrapper for mysqldump to backup all databases. By Marc Swanson. + +@item @uref{http://www.mysql.com/Downloads/Contrib/mdu.pl.gz,mdu.pl.gz} +Prints the storage usage of a @strong{MySQL} database. @end itemize @cindex RPMs, for common tools @@ -37918,6 +37930,7 @@ though, so 3.23 is not released as a stable version yet. * News-3.23.4:: Changes in release 3.23.4 * News-3.23.3:: Changes in release 3.23.3 * News-3.23.2:: Changes in release 3.23.2 +* News-3.23.1:: Changes in release 3.23.1 * News-3.23.0:: Changes in release 3.23.0 @end menu @@ -37925,6 +37938,14 @@ though, so 3.23 is not released as a stable version yet. @appendixsubsec Changes in release 3.23.26 @itemize @bullet @item +@code{LEFT JOIN} did in some case prefer a full table scan when one +didn't have a @code{WHERE} clause. +@item +When using @code{--log-slow-queries}, don't count the time waiting for a lock. +@item +Fixed bug in lock code on @code{windows} which could cause the key cache +to report that the key file was crashed even if it was ok. +@item Automatic repair of @code{MyISAM} tables if you start @code{mysqld} with @code{--myisam-recover}. @item @@ -42286,12 +42307,20 @@ Allow users to change startup options. @item Subqueries. @code{select id from t where grp in (select grp from g where u > 100)} @item +@code{INSERT SQL_CONCURRENT ...}; This will force the insert to happen at the +end of the data file if the table is in use by an select to allow +concurrent inserts. +@item +Change @code{INSERT ... SELECT} to use concurrent inserts. +@item Add range checking to @code{MERGE} tables. @item @code{SHOW OPEN TABLES} @item Port of @strong{MySQL} to BeOS. @item +Link the @code{myisampack} code into the server. +@item Add a temporary key buffer cache during @code{insert/delete/update} so that we can gracefully recover if the index file gets full. @item diff --git a/client/mysqladmin.c b/client/mysqladmin.c index aec7ec892cf..f8432ec7fb6 100644 --- a/client/mysqladmin.c +++ b/client/mysqladmin.c @@ -446,7 +446,8 @@ static my_bool execute_commands(MYSQL *mysql,int argc, char **argv) case ADMIN_REFRESH: if (mysql_refresh(mysql, (uint) ~(REFRESH_GRANT | REFRESH_STATUS | - REFRESH_READ_LOCK)) < 0) + REFRESH_READ_LOCK | REFRESH_SLAVE | + REFRESH_MASTER)) < 0) { my_printf_error(0,"refresh failed; error: '%s'",MYF(ME_BELL), mysql_error(mysql)); diff --git a/configure.in b/configure.in index 77f9d84d883..271c284d6af 100644 --- a/configure.in +++ b/configure.in @@ -4,7 +4,7 @@ dnl Process this file with autoconf to produce a configure script. AC_INIT(sql/mysqld.cc) AC_CANONICAL_SYSTEM # The Docs Makefile.am parses this line! -AM_INIT_AUTOMAKE(mysql, 3.23.25-beta) +AM_INIT_AUTOMAKE(mysql, 3.23.26-beta) AM_CONFIG_HEADER(config.h) PROTOCOL_VERSION=10 @@ -662,7 +662,7 @@ case $SYSTEM_TYPE in ;; *hpux11.*) echo "Enabling pread/pwrite workaround for hpux 11" - CFLAGS="$CFLAGS -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE" + CFLAGS="$CFLAGS -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -DHAVE_BROKEN_GETPASS" CXXFLAGS="$CXXFLAGS -DHAVE_BROKEN_PREAD -DDONT_USE_FINITE -D_INCLUDE_LONGLONG" if test "$with_named_thread" = "no" then diff --git a/extra/perror.c b/extra/perror.c index af8f77e19be..ec523ecba0b 100644 --- a/extra/perror.c +++ b/extra/perror.c @@ -17,7 +17,7 @@ /* Return error-text for system error messages and nisam messages */ -#define PERROR_VERSION "2.5" +#define PERROR_VERSION "2.6" #include <global.h> #include <my_sys.h> @@ -62,7 +62,7 @@ static HA_ERRORS ha_errlist[]= { 138,"Unsupported extension used for table" }, { 139,"Too big row (>= 16 M)"}, { 140,"Wrong create options"}, - { 141,"Duplicate unique on write or update"}, + { 141,"Duplicate unique key or constraint on write or update"}, { 142,"Unknown character set used"}, { 143,"Conflicting table definition between MERGE and mapped table"}, { 144,"Table is crashed and last repair failed"}, diff --git a/include/my_pthread.h b/include/my_pthread.h index 07c0c3e502e..1722c5cf9b2 100644 --- a/include/my_pthread.h +++ b/include/my_pthread.h @@ -76,7 +76,7 @@ int pthread_attr_setprio(pthread_attr_t *connect_att,int priority); int pthread_attr_destroy(pthread_attr_t *connect_att); struct tm *localtime_r(const time_t *timep,struct tm *tmp); -void pthread_exit(unsigned A); /* was #define pthread_exit(A) ExitThread(A)*/ +void pthread_exit(void *a); /* was #define pthread_exit(A) ExitThread(A)*/ #define ETIMEDOUT 145 /* Win32 doesn't have this */ #define getpid() GetCurrentThreadId() diff --git a/myisam/mi_locking.c b/myisam/mi_locking.c index a5cbdd4f906..4797584627a 100644 --- a/myisam/mi_locking.c +++ b/myisam/mi_locking.c @@ -177,18 +177,19 @@ int mi_lock_database(MI_INFO *info, int lock_type) if (!share->w_locks) { flag=1; - VOID(my_seek(share->kfile,0L,MY_SEEK_SET,MYF(0))); - if (my_lock(share->kfile,lock_type,0L,F_TO_EOF,info->lock_wait)) + if (my_lock(share->kfile,lock_type,0L,F_TO_EOF, + info->lock_wait | MY_SEEK_NOT_DONE)) { error=my_errno; break; } if (!share->r_locks) { - if (mi_state_info_read_dsk(share->kfile, &share->state, 0)) + if (mi_state_info_read_dsk(share->kfile, &share->state, 1)) { error=my_errno; - VOID(my_lock(share->kfile,F_UNLCK,0L,F_TO_EOF,info->lock_wait)); + VOID(my_lock(share->kfile,F_UNLCK,0L,F_TO_EOF, + info->lock_wait | MY_SEEK_NOT_DONE)); my_errno=error; break; } diff --git a/myisam/sort.c b/myisam/sort.c index 436fa5a3c67..a2a28ec9109 100644 --- a/myisam/sort.c +++ b/myisam/sort.c @@ -128,8 +128,8 @@ int _create_index_by_sort(MI_SORT_PARAM *info,my_bool no_messages, } if (memavl < MIN_SORT_MEMORY) { - mi_check_print_error(info->sort_info->param,"Sort buffer to small"); - goto err; + mi_check_print_error(info->sort_info->param,"Sort buffer to small"); /* purecov: tested */ + goto err; /* purecov: tested */ } (*info->lock_in_memory)(info->sort_info->param);/* Everything is allocated */ @@ -138,13 +138,13 @@ int _create_index_by_sort(MI_SORT_PARAM *info,my_bool no_messages, if ((records=find_all_keys(info,keys,sort_keys,buffpek,&maxbuffer,&tempfile)) == HA_POS_ERROR) - goto err; + goto err; /* purecov: tested */ if (maxbuffer == 0) { if (!no_messages) printf(" - Dumping %lu keys\n",records); if (write_index(info,sort_keys,(uint) records)) - goto err; + goto err; /* purecov: inspected */ } else { @@ -152,17 +152,17 @@ int _create_index_by_sort(MI_SORT_PARAM *info,my_bool no_messages, if (maxbuffer >= MERGEBUFF2) { if (!no_messages) - printf(" - Merging %lu keys\n",records); + printf(" - Merging %lu keys\n",records); /* purecov: tested */ if (merge_many_buff(info,keys,sort_keys,buffpek,&maxbuffer,&tempfile)) - goto err; + goto err; /* purecov: inspected */ } if (flush_io_cache(&tempfile) || reinit_io_cache(&tempfile,READ_CACHE,0L,0,0)) - goto err; + goto err; /* purecov: inspected */ if (!no_messages) - puts(" - Last merge and dumping keys"); + puts(" - Last merge and dumping keys"); /* purecov: tested */ if (merge_index(info,keys,sort_keys,buffpek,maxbuffer,&tempfile)) - goto err; + goto err; /* purecov: inspected */ } error =0; @@ -195,17 +195,17 @@ static ha_rows NEAR_F find_all_keys(MI_SORT_PARAM *info, uint keys, { if (indexpos >= (uint) *maxbuffer || write_keys(info,sort_keys,idx-1,buffpek+indexpos,tempfile)) - DBUG_RETURN((ha_rows) -1); + DBUG_RETURN(HA_POS_ERROR); /* purecov: inspected */ memcpy(sort_keys[0],sort_keys[idx-1],(size_t) info->key_length); idx=1; indexpos++; } } if (error > 0) - DBUG_RETURN(HA_POS_ERROR); /* Aborted by get_key */ + DBUG_RETURN(HA_POS_ERROR); /* Aborted by get_key */ /* purecov: inspected */ if (indexpos) if (indexpos >= (uint) *maxbuffer || write_keys(info,sort_keys,idx,buffpek+indexpos,tempfile)) - DBUG_RETURN(HA_POS_ERROR); + DBUG_RETURN(HA_POS_ERROR); /* purecov: inspected */ *maxbuffer=(int) indexpos; DBUG_RETURN(indexpos*(keys-1)+idx); } /* find_all_keys */ @@ -226,13 +226,13 @@ static int NEAR_F write_keys(MI_SORT_PARAM *info, register uchar **sort_keys, if (!my_b_inited(tempfile) && open_cached_file(tempfile, info->tmpdir, "ST", DISK_BUFFER_SIZE, info->myf_rw)) - DBUG_RETURN(1); + DBUG_RETURN(1); /* purecov: inspected */ buffpek->file_pos=my_b_tell(tempfile); buffpek->count=count; for (end=sort_keys+count ; sort_keys != end ; sort_keys++) if (my_b_write(tempfile,(byte*) *sort_keys,(uint) sort_length)) - DBUG_RETURN(1); + DBUG_RETURN(1); /* purecov: inspected */ DBUG_RETURN(0); } /* write_keys */ @@ -248,7 +248,7 @@ static int NEAR_F write_index(MI_SORT_PARAM *info, register uchar **sort_keys, (qsort2_cmp) info->key_cmp,info->sort_info); while (count--) if ((*info->key_write)(info->sort_info,*sort_keys++)) - DBUG_RETURN(-1); + DBUG_RETURN(-1); /* purecov: inspected */ DBUG_RETURN(0); } /* write_index */ @@ -281,11 +281,11 @@ static int NEAR_F merge_many_buff(MI_SORT_PARAM *info, uint keys, { if (merge_buffers(info,keys,from_file,to_file,sort_keys,lastbuff++, buffpek+i,buffpek+i+MERGEBUFF-1)) - break; + break; /* purecov: inspected */ } if (merge_buffers(info,keys,from_file,to_file,sort_keys,lastbuff++, buffpek+i,buffpek+ *maxbuffer)) - break; + break; /* purecov: inspected */ if (flush_io_cache(to_file)) break; /* purecov: inspected */ temp=from_file; from_file=to_file; to_file=temp; @@ -350,19 +350,19 @@ merge_buffers(MI_SORT_PARAM *info, uint keys, IO_CACHE *from_file, if (init_queue(&queue,(uint) (Tb-Fb)+1,offsetof(BUFFPEK,key),0, (int (*)(void*, byte *,byte*)) info->key_cmp, (void*) info->sort_info)) - DBUG_RETURN(1); + DBUG_RETURN(1); /* purecov: inspected */ - for (buffpek= Fb ; buffpek <= Tb && error != -1 ; buffpek++) + for (buffpek= Fb ; buffpek <= Tb ; buffpek++) { count+= buffpek->count; buffpek->base= strpos; buffpek->max_keys=maxcount; strpos+= (uint) (error=(int) read_to_buffer(from_file,buffpek, sort_length)); + if (error == -1) + goto err; /* purecov: inspected */ queue_insert(&queue,(void*) buffpek); } - if (error == -1) - goto err; while (queue.elements > 1) { @@ -373,14 +373,14 @@ merge_buffers(MI_SORT_PARAM *info, uint keys, IO_CACHE *from_file, { if (my_b_write(to_file,(byte*) buffpek->key,(uint) sort_length)) { - error=1; goto err; + error=1; goto err; /* purecov: inspected */ } } else { if ((*info->key_write)(info->sort_info,(void*) buffpek->key)) { - error=1; goto err; + error=1; goto err; /* purecov: inspected */ } } buffpek->key+=sort_length; @@ -429,7 +429,7 @@ merge_buffers(MI_SORT_PARAM *info, uint keys, IO_CACHE *from_file, if (my_b_write(to_file,(byte*) buffpek->key, (sort_length*buffpek->mem_count))) { - error=1; goto err; + error=1; goto err; /* purecov: inspected */ } } else @@ -442,7 +442,7 @@ merge_buffers(MI_SORT_PARAM *info, uint keys, IO_CACHE *from_file, { if ((*info->key_write)(info->sort_info,(void*) strpos)) { - error=1; goto err; + error=1; goto err; /* purecov: inspected */ } } } @@ -468,7 +468,7 @@ merge_index(MI_SORT_PARAM *info, uint keys, uchar **sort_keys, DBUG_ENTER("merge_index"); if (merge_buffers(info,keys,tempfile,(IO_CACHE*) 0,sort_keys,buffpek,buffpek, buffpek+maxbuffer)) - DBUG_RETURN(1); + DBUG_RETURN(1); /* purecov: inspected */ DBUG_RETURN(0); } /* merge_index */ diff --git a/mysys/mf_tempfile.c b/mysys/mf_tempfile.c index 44826ad57c2..e78cb3ca2ae 100644 --- a/mysys/mf_tempfile.c +++ b/mysys/mf_tempfile.c @@ -43,7 +43,7 @@ File create_temp_file(char *to, const char *dir, const char *prefix, DBUG_ENTER("open_temp_file"); #if defined(_MSC_VER) { - char *end,*res,**old_env,*temp_env[1]; + char temp[FN_REFLEN],*end,*res,**old_env,*temp_env[1]; old_env=environ; if (dir) { diff --git a/mysys/my_lock.c b/mysys/my_lock.c index 4f1506f20cf..ed637648353 100644 --- a/mysys/my_lock.c +++ b/mysys/my_lock.c @@ -109,10 +109,17 @@ int my_lock(File fd, int locktype, my_off_t start, my_off_t length, printf("Error: DosSetFileLocks() == %d\n",rc); } #elif defined(HAVE_LOCKING) - if (MyFlags & MY_SEEK_NOT_DONE) - VOID(my_seek(fd,start,MY_SEEK_SET,MYF(MyFlags & ~MY_SEEK_NOT_DONE))); - if (!locking(fd,locktype,(ulong) length) || errno == EINVAL) - DBUG_RETURN(0); + /* Windows */ + { + my_bool error; + pthread_mutex_lock(&my_file_info[fd].mutex); + if (MyFlags & MY_SEEK_NOT_DONE) + VOID(my_seek(fd,start,MY_SEEK_SET,MYF(MyFlags & ~MY_SEEK_NOT_DONE))); + error= locking(fd,locktype,(ulong) length) && errno != EINVAL; + pthread_mutex_unlock(&my_file_info[fd].mutex); + if (!error) + DBUG_RETURN(0); + } #else #if defined(HAVE_FCNTL) lock.l_type= (short) locktype; diff --git a/mysys/my_winthread.c b/mysys/my_winthread.c index 6a99fa0bb02..2fe56a13baf 100644 --- a/mysys/my_winthread.c +++ b/mysys/my_winthread.c @@ -61,7 +61,7 @@ static pthread_handler_decl(pthread_start,param) win_pthread_self=((struct pthread_map *) param)->pthreadself; pthread_mutex_unlock(&THR_LOCK_thread); free((char*) param); /* Free param from create */ - pthread_exit((*func)(func_param)); + pthread_exit((void*) (*func)(func_param)); return 0; /* Safety */ } @@ -103,7 +103,7 @@ int pthread_create(pthread_t *thread_id, pthread_attr_t *attr, } -void pthread_exit(unsigned A) +void pthread_exit(void *a) { _endthread(); } diff --git a/sql-bench/Results/ATIS-mysql-Linux_2.2.13_SMP_alpha b/sql-bench/Results/ATIS-mysql-Linux_2.2.13_SMP_alpha new file mode 100644 index 00000000000..b50e5bf75fc --- /dev/null +++ b/sql-bench/Results/ATIS-mysql-Linux_2.2.13_SMP_alpha @@ -0,0 +1,19 @@ +Testing server 'MySQL 3.23.25 beta' at 2000-10-13 0:30:52 + +ATIS table test + +Creating tables +Time for create_table (28): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Inserting data +Time to insert (9768): 4 wallclock secs ( 0.66 usr 0.60 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Retrieving data +Time for select_simple_join (500): 2 wallclock secs ( 0.64 usr 0.38 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for select_join (200): 13 wallclock secs ( 4.22 usr 3.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for select_distinct (800): 11 wallclock secs ( 1.68 usr 1.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for select_group (2800): 10 wallclock secs ( 1.54 usr 0.65 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Removing tables +Time to drop_table (28): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Total time: 40 wallclock secs ( 8.74 usr 5.83 sys + 0.00 cusr 0.00 csys = 0.00 CPU) diff --git a/sql-bench/Results/ATIS-mysql-NT_4.0 b/sql-bench/Results/ATIS-mysql-NT_4.0 index 1e3f4aef640..d523526a1a5 100644 --- a/sql-bench/Results/ATIS-mysql-NT_4.0 +++ b/sql-bench/Results/ATIS-mysql-NT_4.0 @@ -1,19 +1,19 @@ -Testing server 'MySQL 3.23.25 beta' at 2000-09-27 2:53:29
+Testing server 'MySQL 3.23.26 gamma' at 2000-10-13 14:00:43
ATIS table test
Creating tables
-Time for create_table (28): 0 wallclock secs ( 0.00 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for create_table (28): 1 wallclock secs ( 0.02 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting data
-Time to insert (9768): 5 wallclock secs ( 0.86 usr 1.25 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to insert (9768): 5 wallclock secs ( 1.06 usr 1.22 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Retrieving data
-Time for select_simple_join (500): 4 wallclock secs ( 1.75 usr 0.53 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_join (200): 22 wallclock secs (13.38 usr 5.28 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_distinct (800): 17 wallclock secs ( 4.75 usr 1.78 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_group (2800): 21 wallclock secs ( 3.16 usr 1.13 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_simple_join (500): 3 wallclock secs ( 1.56 usr 0.66 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_join (200): 23 wallclock secs (13.31 usr 5.59 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_distinct (800): 17 wallclock secs ( 4.36 usr 2.64 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_group (2800): 20 wallclock secs ( 3.14 usr 1.14 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Removing tables
Time to drop_table (28): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Total time: 69 wallclock secs (23.89 usr 9.98 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 69 wallclock secs (23.45 usr 11.27 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/Results/RUN-mysql-Linux_2.2.13_SMP_alpha b/sql-bench/Results/RUN-mysql-Linux_2.2.13_SMP_alpha new file mode 100644 index 00000000000..a4e9f92a9e3 --- /dev/null +++ b/sql-bench/Results/RUN-mysql-Linux_2.2.13_SMP_alpha @@ -0,0 +1,86 @@ +Benchmark DBD suite: 2.9 +Date of test: 2000-10-13 0:30:52 +Running tests on: Linux 2.2.13-SMP alpha +Arguments: +Comments: Alpha DS20 2x500 MHz, 2G memory, key_buffer=16M; gcc 2.95.2 + ccc +Limits from: +Server version: MySQL 3.23.25 beta + +ATIS: Total time: 40 wallclock secs ( 8.74 usr 5.83 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +alter-table: Total time: 435 wallclock secs ( 0.29 usr 0.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +big-tables: Total time: 41 wallclock secs ( 8.36 usr 10.28 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +connect: Total time: 76 wallclock secs (34.42 usr 12.79 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +create: Total time: 135 wallclock secs (10.37 usr 4.56 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +insert: Total time: 1756 wallclock secs (370.65 usr 171.18 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +select: Total time: 1982 wallclock secs (130.60 usr 108.91 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +wisconsin: Total time: 19 wallclock secs ( 3.67 usr 2.69 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +All 8 test executed successfully + +Totals per operation: +Operation seconds usr sys cpu tests +alter_table_add 238.00 0.17 0.07 0.00 992 +alter_table_drop 189.00 0.06 0.04 0.00 496 +connect 13.00 7.52 2.74 0.00 10000 +connect+select_1_row 16.00 7.90 3.25 0.00 10000 +connect+select_simple 16.00 7.94 3.21 0.00 10000 +count 53.00 0.04 0.01 0.00 100 +count_distinct 94.00 0.64 0.20 0.00 1000 +count_distinct_big 851.00 79.09 89.50 0.00 1020 +count_distinct_group 69.00 1.13 0.58 0.00 1000 +count_distinct_group_on_key 48.00 0.37 0.16 0.00 1000 +count_distinct_group_on_key_parts 69.00 1.10 0.62 0.00 1000 +count_group_on_key_parts 44.00 1.15 0.58 0.00 1000 +count_on_key 452.00 15.84 4.57 0.00 50100 +create+drop 13.00 2.72 1.19 0.00 10000 +create_MANY_tables 91.00 1.80 0.61 0.00 10000 +create_index 4.00 0.00 0.00 0.00 8 +create_key+drop 17.00 4.20 1.25 0.00 10000 +create_table 0.00 0.00 0.00 0.00 31 +delete_all 11.00 0.00 0.00 0.00 12 +delete_all_many_keys 49.00 0.01 0.00 0.00 1 +delete_big 0.00 0.00 0.00 0.00 1 +delete_big_many_keys 49.00 0.01 0.00 0.00 128 +delete_key 5.00 0.68 0.58 0.00 10000 +drop_index 4.00 0.00 0.00 0.00 8 +drop_table 0.00 0.00 0.00 0.00 28 +drop_table_when_MANY_tables 7.00 0.69 0.60 0.00 10000 +insert 132.00 22.47 20.01 0.00 350768 +insert_duplicates 40.00 6.20 6.19 0.00 100000 +insert_key 95.00 8.49 5.48 0.00 100000 +insert_many_fields 14.00 0.34 0.12 0.00 2000 +insert_select_1_key 5.00 0.00 0.00 0.00 1 +insert_select_2_keys 7.00 0.00 0.00 0.00 1 +min_max 23.00 0.03 0.00 0.00 60 +min_max_on_key 188.00 25.65 7.76 0.00 85000 +multiple_value_insert 7.00 2.08 0.05 0.00 100000 +order_by 51.00 21.06 22.46 0.00 10 +order_by_key 36.00 20.39 14.82 0.00 10 +outer_join 65.00 0.00 0.00 0.00 10 +outer_join_found 60.00 0.00 0.00 0.00 10 +outer_join_not_found 38.00 0.01 0.00 0.00 500 +outer_join_on_key 42.00 0.00 0.00 0.00 10 +select_1_row 3.00 0.38 1.04 0.00 10000 +select_2_rows 3.00 0.35 0.96 0.00 10000 +select_big 56.00 30.32 15.00 0.00 10080 +select_column+column 3.00 0.32 0.73 0.00 10000 +select_diff_key 175.00 0.24 0.05 0.00 500 +select_distinct 11.00 1.68 1.02 0.00 800 +select_group 51.00 1.59 0.66 0.00 2911 +select_group_when_MANY_tables 7.00 0.95 0.90 0.00 10000 +select_join 13.00 4.22 3.17 0.00 200 +select_key 141.00 74.40 21.54 0.00 200000 +select_key2 146.00 76.95 20.42 0.00 200000 +select_key_prefix 146.00 76.59 19.98 0.00 200000 +select_many_fields 27.00 8.01 10.15 0.00 2000 +select_range 269.00 9.47 5.61 0.00 410 +select_range_key2 19.00 6.47 2.37 0.00 25010 +select_range_prefix 20.00 6.54 2.29 0.00 25010 +select_simple 2.00 0.28 0.79 0.00 10000 +select_simple_join 2.00 0.64 0.38 0.00 500 +update_big 28.00 0.00 0.00 0.00 10 +update_of_key 44.00 2.93 2.56 0.00 50256 +update_of_key_big 19.00 0.04 0.03 0.00 501 +update_with_key 139.00 23.06 19.06 0.00 300000 +wisc_benchmark 4.00 1.75 0.93 0.00 114 +TOTALS 4533.00 566.96 316.29 0.00 1944607 diff --git a/sql-bench/Results/RUN-mysql-NT_4.0 b/sql-bench/Results/RUN-mysql-NT_4.0 index a21bc3c1158..e1908bc04b0 100644 --- a/sql-bench/Results/RUN-mysql-NT_4.0 +++ b/sql-bench/Results/RUN-mysql-NT_4.0 @@ -1,79 +1,86 @@ Benchmark DBD suite: 2.9
-Date of test: 2000-09-27 2:14:34
+Date of test: 2000-10-13 13:16:20
Running tests on: Windows NT Version 4.0
Arguments:
Comments: 2x Pentium III XEON 450MHZ, 512M
Limits from:
-Server version: MySQL 3.23.25 beta
+Server version: MySQL 3.23.26 gamma
-alter-table: Total time: 2334 wallclock secs ( 0.75 usr 0.48 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-ATIS: Total time: 69 wallclock secs (23.89 usr 9.98 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-big-tables: Total time: 80 wallclock secs (17.56 usr 18.45 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-connect: Total time: 183 wallclock secs (59.48 usr 50.92 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-create: Failed (output/create-mysql-NT_4.0)
-insert: Total time: 5829 wallclock secs (581.28 usr 317.09 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-select: Total time: 2397 wallclock secs (317.05 usr 117.49 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-wisconsin: Total time: 28 wallclock secs ( 8.19 usr 5.31 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+alter-table: Total time: 2663 wallclock secs ( 0.73 usr 0.64 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+ATIS: Total time: 69 wallclock secs (23.45 usr 11.27 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+big-tables: Total time: 80 wallclock secs (17.59 usr 18.69 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+connect: Total time: 178 wallclock secs (57.88 usr 48.91 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+create: Total time: 848 wallclock secs (14.42 usr 10.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+insert: Total time: 5599 wallclock secs (584.97 usr 320.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+select: Total time: 2294 wallclock secs (316.44 usr 121.50 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+wisconsin: Total time: 28 wallclock secs ( 8.39 usr 5.59 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Of 8 tests, 1 tests didn't work
+All 8 test executed successfully
Totals per operation:
Operation seconds usr sys cpu tests
-alter_table_add 1242.00 0.42 0.17 0.00 992
-alter_table_drop 1042.00 0.25 0.25 0.00 496
-connect 32.00 10.92 11.08 0.00 10000
-connect+select_1_row 38.00 12.33 12.44 0.00 10000
-connect+select_simple 37.00 12.31 11.61 0.00 10000
-count 39.00 0.06 0.02 0.00 100
-count_distinct 97.00 0.97 0.36 0.00 1000
-count_distinct_big 1209.00 225.82 83.41 0.00 1020
-count_distinct_group 144.00 2.70 0.98 0.00 1000
-count_distinct_group_on_key 54.00 0.61 0.23 0.00 1000
-count_distinct_group_on_key_parts 144.00 2.44 1.28 0.00 1000
-count_group_on_key_parts 47.00 2.34 0.75 0.00 1000
-count_on_key 438.00 22.47 8.91 0.00 50100
-create_index 26.00 0.00 0.00 0.00 8
-create_table 0.00 0.00 0.02 0.00 31
-delete_all 22.00 0.00 0.00 0.00 12
-delete_all_many_keys 1498.00 0.02 0.01 0.00 1
+alter_table_add 1433.00 0.45 0.34 0.00 992
+alter_table_drop 1177.00 0.17 0.14 0.00 496
+connect 33.00 11.66 10.31 0.00 10000
+connect+select_1_row 38.00 12.94 12.19 0.00 10000
+connect+select_simple 38.00 12.14 12.00 0.00 10000
+count 34.00 0.11 0.03 0.00 100
+count_distinct 74.00 0.95 0.28 0.00 1000
+count_distinct_big 1191.00 227.87 86.22 0.00 1020
+count_distinct_group 149.00 2.50 1.00 0.00 1000
+count_distinct_group_on_key 40.00 0.63 0.27 0.00 1000
+count_distinct_group_on_key_parts 149.00 2.95 1.06 0.00 1000
+count_group_on_key_parts 41.00 2.72 0.84 0.00 1000
+count_on_key 407.00 20.91 9.02 0.00 50100
+create+drop 124.00 3.22 2.39 0.00 10000
+create_MANY_tables 213.00 2.77 1.67 0.00 10000
+create_index 27.00 0.00 0.00 0.00 8
+create_key+drop 159.00 5.92 2.61 0.00 10000
+create_table 1.00 0.02 0.02 0.00 31
+delete_all 22.00 0.00 0.02 0.00 12
+delete_all_many_keys 1422.00 0.00 0.00 0.00 1
delete_big 0.00 0.00 0.00 0.00 1
-delete_big_many_keys 1498.00 0.02 0.01 0.00 128
-delete_key 7.00 0.97 1.25 0.00 10000
-drop_index 24.00 0.00 0.02 0.00 8
+delete_big_many_keys 1422.00 0.00 0.00 0.00 128
+delete_key 7.00 0.97 1.36 0.00 10000
+drop_index 25.00 0.00 0.02 0.00 8
drop_table 0.00 0.00 0.00 0.00 28
-insert 234.00 34.55 46.33 0.00 350768
-insert_duplicates 59.00 6.50 10.52 0.00 300000
-insert_key 1593.00 14.31 14.47 0.00 100000
-insert_many_fields 22.00 0.52 0.42 0.00 2000
-min_max 20.00 0.05 0.03 0.00 60
-min_max_on_key 211.00 37.06 13.64 0.00 85000
-multiple_value_insert 9.00 2.51 0.24 0.00 100000
-order_by 99.00 63.39 25.81 0.00 10
-order_by_key 89.00 63.61 25.09 0.00 10
-outer_join 120.00 0.00 0.00 0.00 10
-outer_join_found 106.00 0.01 0.00 0.00 10
-outer_join_not_found 55.00 0.00 0.00 0.00 500
+drop_table_when_MANY_tables 159.00 1.22 1.27 0.00 10000
+insert 252.00 34.77 46.66 0.00 350768
+insert_duplicates 59.00 8.11 13.67 0.00 100000
+insert_key 1447.00 13.78 13.42 0.00 100000
+insert_many_fields 22.00 0.55 0.35 0.00 2000
+insert_select_1_key 8.00 0.00 0.00 0.00 1
+insert_select_2_keys 13.00 0.00 0.00 0.00 1
+min_max 18.00 0.11 0.02 0.00 60
+min_max_on_key 192.00 36.01 14.60 0.00 85000
+multiple_value_insert 9.00 2.34 0.26 0.00 100000
+order_by 98.00 63.58 25.14 0.00 10
+order_by_key 90.00 64.05 25.08 0.00 10
+outer_join 118.00 0.01 0.00 0.00 10
+outer_join_found 105.00 0.00 0.00 0.00 10
+outer_join_not_found 56.00 0.00 0.00 0.00 500
outer_join_on_key 40.00 0.00 0.00 0.00 10
-select_1_row 5.00 1.13 1.70 0.00 10000
-select_2_rows 6.00 0.97 1.97 0.00 10000
-select_big 144.00 84.41 33.61 0.00 10080
-select_column+column 6.00 1.06 1.67 0.00 10000
-select_diff_key 123.00 0.39 0.08 0.00 500
-select_distinct 17.00 4.75 1.78 0.00 800
-select_group 61.00 3.29 1.15 0.00 2911
-select_join 22.00 13.38 5.28 0.00 200
-select_key 193.00 92.27 38.89 0.00 200000
-select_key2 202.00 93.95 37.08 0.00 200000
-select_key_prefix 198.00 91.75 40.53 0.00 200000
-select_many_fields 55.00 17.05 18.03 0.00 2000
-select_range 187.00 27.56 9.31 0.00 410
-select_range_key2 29.00 10.02 3.90 0.00 25010
-select_range_prefix 28.00 10.74 3.92 0.00 25010
-select_simple 4.00 0.86 1.70 0.00 10000
-select_simple_join 4.00 1.75 0.53 0.00 500
-update_big 64.00 0.00 0.00 0.00 500
-update_of_key 541.00 4.83 6.56 0.00 756
-update_of_key_big 34.00 0.08 0.05 0.00 501
-update_with_key 185.00 24.97 40.99 0.00 100000
-wisc_benchmark 9.00 5.80 1.64 0.00 114
-TOTALS 12412.00 1008.17 519.72 0.00 1845595
+select_1_row 5.00 0.78 1.78 0.00 10000
+select_2_rows 6.00 0.91 2.11 0.00 10000
+select_big 138.00 81.45 32.88 0.00 10080
+select_column+column 6.00 1.00 1.72 0.00 10000
+select_diff_key 124.00 0.41 0.09 0.00 500
+select_distinct 17.00 4.36 2.64 0.00 800
+select_group 56.00 3.22 1.16 0.00 2911
+select_group_when_MANY_tables 193.00 1.28 2.25 0.00 10000
+select_join 23.00 13.31 5.59 0.00 200
+select_key 196.00 96.84 36.63 0.00 200000
+select_key2 203.00 92.92 39.80 0.00 200000
+select_key_prefix 201.00 91.41 40.78 0.00 200000
+select_many_fields 56.00 17.03 18.35 0.00 2000
+select_range 189.00 26.94 9.30 0.00 410
+select_range_key2 30.00 10.56 3.72 0.00 25010
+select_range_prefix 26.00 9.81 4.36 0.00 25010
+select_simple 4.00 1.05 1.67 0.00 10000
+select_simple_join 3.00 1.56 0.66 0.00 500
+update_big 62.00 0.00 0.00 0.00 10
+update_of_key 492.00 4.46 7.55 0.00 50256
+update_of_key_big 33.00 0.06 0.03 0.00 501
+update_with_key 188.00 25.03 40.83 0.00 300000
+wisc_benchmark 9.00 5.80 1.47 0.00 114
+TOTALS 13172.00 1023.62 537.63 0.00 1944607
diff --git a/sql-bench/Results/alter-table-mysql-Linux_2.2.13_SMP_alpha b/sql-bench/Results/alter-table-mysql-Linux_2.2.13_SMP_alpha new file mode 100644 index 00000000000..acf5c463223 --- /dev/null +++ b/sql-bench/Results/alter-table-mysql-Linux_2.2.13_SMP_alpha @@ -0,0 +1,16 @@ +Testing server 'MySQL 3.23.25 beta' at 2000-10-13 0:31:33 + +Testing of ALTER TABLE +Testing with 1000 columns and 1000 rows in 20 steps +Insert data into the table +Time for insert (1000) 0 wallclock secs ( 0.06 usr 0.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Time for alter_table_add (992): 238 wallclock secs ( 0.17 usr 0.07 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Time for create_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Time for drop_index (8): 4 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Time for alter_table_drop (496): 189 wallclock secs ( 0.06 usr 0.04 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Total time: 435 wallclock secs ( 0.29 usr 0.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU) diff --git a/sql-bench/Results/alter-table-mysql-NT_4.0 b/sql-bench/Results/alter-table-mysql-NT_4.0 index 77e11040bf3..5a7cd64f85b 100644 --- a/sql-bench/Results/alter-table-mysql-NT_4.0 +++ b/sql-bench/Results/alter-table-mysql-NT_4.0 @@ -1,16 +1,16 @@ -Testing server 'MySQL 3.23.25 beta' at 2000-09-27 2:14:35
+Testing server 'MySQL 3.23.26 gamma' at 2000-10-13 13:16:20
Testing of ALTER TABLE
Testing with 1000 columns and 1000 rows in 20 steps
Insert data into the table
-Time for insert (1000) 0 wallclock secs ( 0.06 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for insert (1000) 1 wallclock secs ( 0.11 usr 0.14 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for alter_table_add (992): 1242 wallclock secs ( 0.42 usr 0.17 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for alter_table_add (992): 1433 wallclock secs ( 0.45 usr 0.34 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for create_index (8): 26 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for create_index (8): 27 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for drop_index (8): 24 wallclock secs ( 0.00 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for drop_index (8): 25 wallclock secs ( 0.00 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for alter_table_drop (496): 1042 wallclock secs ( 0.25 usr 0.25 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for alter_table_drop (496): 1177 wallclock secs ( 0.17 usr 0.14 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Total time: 2334 wallclock secs ( 0.75 usr 0.48 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 2663 wallclock secs ( 0.73 usr 0.64 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/Results/big-tables-mysql-Linux_2.2.13_SMP_alpha b/sql-bench/Results/big-tables-mysql-Linux_2.2.13_SMP_alpha new file mode 100644 index 00000000000..02962161846 --- /dev/null +++ b/sql-bench/Results/big-tables-mysql-Linux_2.2.13_SMP_alpha @@ -0,0 +1,19 @@ +Testing server 'MySQL 3.23.25 beta' at 2000-10-13 0:38:49 + +Testing of some unusual tables +All tests are done 1000 times with 1000 fields + +Testing table with 1000 fields +Testing select * from table with 1 record +Time to select_many_fields(1000): 11 wallclock secs ( 3.96 usr 5.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing select all_fields from table with 1 record +Time to select_many_fields(1000): 16 wallclock secs ( 4.05 usr 5.09 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing insert VALUES() +Time to insert_many_fields(1000): 5 wallclock secs ( 0.31 usr 0.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing insert (all_fields) VALUES() +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: 41 wallclock secs ( 8.36 usr 10.28 sys + 0.00 cusr 0.00 csys = 0.00 CPU) diff --git a/sql-bench/Results/big-tables-mysql-NT_4.0 b/sql-bench/Results/big-tables-mysql-NT_4.0 index 4887a4380aa..75f88d4958c 100644 --- a/sql-bench/Results/big-tables-mysql-NT_4.0 +++ b/sql-bench/Results/big-tables-mysql-NT_4.0 @@ -1,19 +1,19 @@ -Testing server 'MySQL 3.23.25 beta' at 2000-09-27 2:54:38
+Testing server 'MySQL 3.23.26 gamma' at 2000-10-13 14:01:53
Testing of some unusual tables
All tests are done 1000 times with 1000 fields
Testing table with 1000 fields
Testing select * from table with 1 record
-Time to select_many_fields(1000): 19 wallclock secs ( 8.08 usr 9.09 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to select_many_fields(1000): 20 wallclock secs ( 8.03 usr 9.38 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select all_fields from table with 1 record
-Time to select_many_fields(1000): 36 wallclock secs ( 8.97 usr 8.94 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to select_many_fields(1000): 36 wallclock secs ( 9.00 usr 8.97 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert VALUES()
-Time to insert_many_fields(1000): 3 wallclock secs ( 0.44 usr 0.09 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to insert_many_fields(1000): 3 wallclock secs ( 0.39 usr 0.13 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert (all_fields) VALUES()
-Time to insert_many_fields(1000): 19 wallclock secs ( 0.08 usr 0.33 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to insert_many_fields(1000): 19 wallclock secs ( 0.16 usr 0.22 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Total time: 80 wallclock secs (17.56 usr 18.45 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 80 wallclock secs (17.59 usr 18.69 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/Results/connect-mysql-Linux_2.2.13_SMP_alpha b/sql-bench/Results/connect-mysql-Linux_2.2.13_SMP_alpha new file mode 100644 index 00000000000..86eceb339d5 --- /dev/null +++ b/sql-bench/Results/connect-mysql-Linux_2.2.13_SMP_alpha @@ -0,0 +1,30 @@ +Testing server 'MySQL 3.23.25 beta' at 2000-10-13 0:39:31 + +Testing the speed of connecting to the server and sending of data +All tests are done 10000 times + +Testing connection/disconnect +Time to connect (10000): 13 wallclock secs ( 7.52 usr 2.74 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Test connect/simple select/disconnect +Time for connect+select_simple (10000): 16 wallclock secs ( 7.94 usr 3.21 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Test simple select +Time for select_simple (10000): 2 wallclock secs ( 0.28 usr 0.79 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing connect/select 1 row from table/disconnect +Time to connect+select_1_row (10000): 16 wallclock secs ( 7.90 usr 3.25 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing select 1 row from table +Time to select_1_row (10000): 3 wallclock secs ( 0.38 usr 1.04 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing select 2 rows from table +Time to select_2_rows (10000): 3 wallclock secs ( 0.35 usr 0.96 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Test select with aritmetic (+) +Time for select_column+column (10000): 3 wallclock secs ( 0.32 usr 0.73 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing retrieval of big records (65000 bytes) +Time to select_big (10000): 20 wallclock secs ( 9.73 usr 0.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Total time: 76 wallclock secs (34.42 usr 12.79 sys + 0.00 cusr 0.00 csys = 0.00 CPU) diff --git a/sql-bench/Results/connect-mysql-NT_4.0 b/sql-bench/Results/connect-mysql-NT_4.0 index 9725018829a..b98cc6603f1 100644 --- a/sql-bench/Results/connect-mysql-NT_4.0 +++ b/sql-bench/Results/connect-mysql-NT_4.0 @@ -1,30 +1,30 @@ -Testing server 'MySQL 3.23.25 beta' at 2000-09-27 2:55:59
+Testing server 'MySQL 3.23.26 gamma' at 2000-10-13 14:03:13
Testing the speed of connecting to the server and sending of data
All tests are done 10000 times
Testing connection/disconnect
-Time to connect (10000): 32 wallclock secs (10.92 usr 11.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to connect (10000): 33 wallclock secs (11.66 usr 10.31 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test connect/simple select/disconnect
-Time for connect+select_simple (10000): 37 wallclock secs (12.31 usr 11.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for connect+select_simple (10000): 38 wallclock secs (12.14 usr 12.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test simple select
-Time for select_simple (10000): 4 wallclock secs ( 0.86 usr 1.70 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_simple (10000): 4 wallclock secs ( 1.05 usr 1.67 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing connect/select 1 row from table/disconnect
-Time to connect+select_1_row (10000): 38 wallclock secs (12.33 usr 12.44 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to connect+select_1_row (10000): 38 wallclock secs (12.94 usr 12.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select 1 row from table
-Time to select_1_row (10000): 5 wallclock secs ( 1.13 usr 1.70 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to select_1_row (10000): 5 wallclock secs ( 0.78 usr 1.78 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing select 2 rows from table
-Time to select_2_rows (10000): 6 wallclock secs ( 0.97 usr 1.97 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to select_2_rows (10000): 6 wallclock secs ( 0.91 usr 2.11 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test select with aritmetic (+)
-Time for select_column+column (10000): 6 wallclock secs ( 1.06 usr 1.67 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_column+column (10000): 6 wallclock secs ( 1.00 usr 1.72 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing retrieval of big records (65000 bytes)
-Time to select_big (10000): 55 wallclock secs (19.89 usr 8.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to select_big (10000): 48 wallclock secs (17.38 usr 7.11 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Total time: 183 wallclock secs (59.48 usr 50.92 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 178 wallclock secs (57.88 usr 48.91 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/Results/create-mysql-Linux_2.2.13_SMP_alpha b/sql-bench/Results/create-mysql-Linux_2.2.13_SMP_alpha new file mode 100644 index 00000000000..e0b355208d4 --- /dev/null +++ b/sql-bench/Results/create-mysql-Linux_2.2.13_SMP_alpha @@ -0,0 +1,18 @@ +Testing server 'MySQL 3.23.25 beta' at 2000-10-13 0:40:47 + +Testing the speed of creating and droping tables +Testing with 10000 tables and 10000 loop count + +Testing create of tables +Time for create_MANY_tables (10000): 91 wallclock secs ( 1.80 usr 0.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Accessing tables +Time to select_group_when_MANY_tables (10000): 7 wallclock secs ( 0.95 usr 0.90 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing drop +Time for drop_table_when_MANY_tables (10000): 7 wallclock secs ( 0.69 usr 0.60 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing create+drop +Time for create+drop (10000): 13 wallclock secs ( 2.72 usr 1.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for create_key+drop (10000): 17 wallclock secs ( 4.20 usr 1.25 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Total time: 135 wallclock secs (10.37 usr 4.56 sys + 0.00 cusr 0.00 csys = 0.00 CPU) diff --git a/sql-bench/Results/create-mysql-NT_4.0 b/sql-bench/Results/create-mysql-NT_4.0 index 36b89967975..7d75b7a3282 100644 --- a/sql-bench/Results/create-mysql-NT_4.0 +++ b/sql-bench/Results/create-mysql-NT_4.0 @@ -1,6 +1,18 @@ -Testing server 'MySQL 3.23.25 beta' at 2000-09-27 2:59:02
+Testing server 'MySQL 3.23.26 gamma' at 2000-10-13 14:06:11
Testing the speed of creating and droping tables
Testing with 10000 tables and 10000 loop count
Testing create of tables
+Time for create_MANY_tables (10000): 213 wallclock secs ( 2.77 usr 1.67 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+
+Accessing tables
+Time to select_group_when_MANY_tables (10000): 193 wallclock secs ( 1.28 usr 2.25 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+
+Testing drop
+Time for drop_table_when_MANY_tables (10000): 159 wallclock secs ( 1.22 usr 1.27 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+
+Testing create+drop
+Time for create+drop (10000): 124 wallclock secs ( 3.22 usr 2.39 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for create_key+drop (10000): 159 wallclock secs ( 5.92 usr 2.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 848 wallclock secs (14.42 usr 10.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/Results/insert-mysql-Linux_2.2.13_SMP_alpha b/sql-bench/Results/insert-mysql-Linux_2.2.13_SMP_alpha new file mode 100644 index 00000000000..3f0bc8835ae --- /dev/null +++ b/sql-bench/Results/insert-mysql-Linux_2.2.13_SMP_alpha @@ -0,0 +1,79 @@ +Testing server 'MySQL 3.23.25 beta' at 2000-10-13 0:43:02 + +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. + +Generating random keys +Creating tables +Inserting 100000 rows in order +Inserting 100000 rows in reverse order +Inserting 100000 rows in random order +Time for insert (300000): 110 wallclock secs (19.18 usr 17.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing insert of duplicates +Time for insert_duplicates (100000): 40 wallclock secs ( 6.20 usr 6.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Retrieving data from the table +Time for select_big (10:3000000): 35 wallclock secs (20.45 usr 14.85 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for order_by_key (10:3000000): 36 wallclock secs (20.39 usr 14.82 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for order_by (10:3000000): 51 wallclock secs (21.06 usr 22.46 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for select_diff_key (500:1000): 175 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.81 usr 0.93 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for select_range_key2 (5010:42084): 10 wallclock secs ( 2.78 usr 1.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for select_key_prefix (200000): 146 wallclock secs (76.59 usr 19.98 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for select_key (200000): 141 wallclock secs (74.40 usr 21.54 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for select_key2 (200000): 146 wallclock secs (76.95 usr 20.42 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Test of compares with simple ranges +Time for select_range_prefix (20000:43500): 9 wallclock secs ( 3.73 usr 1.36 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for select_range_key2 (20000:43500): 9 wallclock secs ( 3.69 usr 1.36 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for select_group (111): 41 wallclock secs ( 0.05 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for min_max_on_key (15000): 10 wallclock secs ( 4.68 usr 1.32 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for min_max (60): 23 wallclock secs ( 0.03 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for count_on_key (100): 38 wallclock secs ( 0.04 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for count (100): 53 wallclock secs ( 0.04 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for count_distinct_big (20): 58 wallclock secs ( 0.00 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing update of keys with functions +Time for update_of_key (50000): 22 wallclock secs ( 2.91 usr 2.54 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for update_of_key_big (501): 19 wallclock secs ( 0.04 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing update with key +Time for update_with_key (300000): 139 wallclock secs (23.06 usr 19.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing update of all rows +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 +Time for outer_join_on_key (10:10): 42 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for outer_join (10:10): 65 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for outer_join_found (10:10): 60 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): 38 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing INSERT INTO ... SELECT +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): 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) + +Testing delete +Time for delete_key (10000): 5 wallclock secs ( 0.68 usr 0.58 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 +Time for insert_key (100000): 95 wallclock secs ( 8.49 usr 5.48 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing update of keys +Time for update_of_key (256): 22 wallclock secs ( 0.02 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Deleting rows from the table +Time for delete_big_many_keys (128): 49 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Deleting everything from table +Time for delete_all_many_keys (1): 49 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Inserting 100000 rows with multiple values +Time for multiple_value_insert (100000): 7 wallclock secs ( 2.08 usr 0.05 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: 1756 wallclock secs (370.65 usr 171.18 sys + 0.00 cusr 0.00 csys = 0.00 CPU) diff --git a/sql-bench/Results/insert-mysql-NT_4.0 b/sql-bench/Results/insert-mysql-NT_4.0 index bb1d1e69ba8..ce42b79436e 100644 --- a/sql-bench/Results/insert-mysql-NT_4.0 +++ b/sql-bench/Results/insert-mysql-NT_4.0 @@ -1,4 +1,4 @@ -Testing server 'MySQL 3.23.25 beta' at 2000-09-27 2:59:03
+Testing server 'MySQL 3.23.26 gamma' at 2000-10-13 14:20:19
Testing the speed of inserting data into 1 table and do some selects on it.
The tests are done with a table that has 100000 rows.
@@ -8,67 +8,72 @@ Creating tables Inserting 100000 rows in order
Inserting 100000 rows in reverse order
Inserting 100000 rows in random order
-Time for insert (300000): 203 wallclock secs (30.05 usr 40.38 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for insert (300000): 221 wallclock secs (30.06 usr 39.92 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing insert of duplicates
-Time for insert_duplicates (300000): 59 wallclock secs ( 6.50 usr 10.52 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for insert_duplicates (100000): 59 wallclock secs ( 8.11 usr 13.67 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Retrieving data from the table
-Time for select_big (10:3000000): 88 wallclock secs (64.08 usr 24.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for order_by_key (10:3000000): 89 wallclock secs (63.61 usr 25.09 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for order_by (10:3000000): 99 wallclock secs (63.39 usr 25.81 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_diff_key (500:1000): 123 wallclock secs ( 0.39 usr 0.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_range_prefix (5010:42084): 15 wallclock secs ( 5.30 usr 1.48 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_range_key2 (5010:42084): 16 wallclock secs ( 4.69 usr 1.74 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_key_prefix (200000): 198 wallclock secs (91.75 usr 40.53 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_key (200000): 193 wallclock secs (92.27 usr 38.89 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_key2 (200000): 202 wallclock secs (93.95 usr 37.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_big (10:3000000): 89 wallclock secs (63.69 usr 25.58 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for order_by_key (10:3000000): 90 wallclock secs (64.05 usr 25.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for order_by (10:3000000): 98 wallclock secs (63.58 usr 25.14 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_diff_key (500:1000): 124 wallclock secs ( 0.41 usr 0.09 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_range_prefix (5010:42084): 14 wallclock secs ( 4.47 usr 1.89 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_range_key2 (5010:42084): 16 wallclock secs ( 4.64 usr 1.77 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_key_prefix (200000): 201 wallclock secs (91.41 usr 40.78 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_key (200000): 196 wallclock secs (96.84 usr 36.63 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_key2 (200000): 203 wallclock secs (92.92 usr 39.80 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Test of compares with simple ranges
-Time for select_range_prefix (20000:43500): 13 wallclock secs ( 5.44 usr 2.44 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_range_key2 (20000:43500): 13 wallclock secs ( 5.33 usr 2.16 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_group (111): 40 wallclock secs ( 0.13 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for min_max_on_key (15000): 14 wallclock secs ( 6.51 usr 2.50 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for min_max (60): 20 wallclock secs ( 0.05 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_on_key (100): 36 wallclock secs ( 0.05 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count (100): 39 wallclock secs ( 0.06 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_distinct_big (20): 92 wallclock secs ( 0.05 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_range_prefix (20000:43500): 12 wallclock secs ( 5.34 usr 2.47 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_range_key2 (20000:43500): 14 wallclock secs ( 5.92 usr 1.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_group (111): 36 wallclock secs ( 0.08 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for min_max_on_key (15000): 14 wallclock secs ( 6.45 usr 2.63 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for min_max (60): 18 wallclock secs ( 0.11 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_on_key (100): 36 wallclock secs ( 0.03 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count (100): 34 wallclock secs ( 0.11 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_distinct_big (20): 96 wallclock secs ( 0.01 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update of keys with functions
-Time for update_of_key (500): 62 wallclock secs ( 4.77 usr 6.50 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for update_of_key_big (501): 34 wallclock secs ( 0.08 usr 0.05 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for update_of_key (50000): 56 wallclock secs ( 4.45 usr 7.47 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for update_of_key_big (501): 33 wallclock secs ( 0.06 usr 0.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update with key
-Time for update_with_key (100000): 185 wallclock secs (24.97 usr 40.99 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for update_with_key (300000): 188 wallclock secs (25.03 usr 40.83 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update of all rows
-Time for update_big (500): 64 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for update_big (10): 62 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing left outer join
Time for outer_join_on_key (10:10): 40 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for outer_join (10:10): 120 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for outer_join_found (10:10): 106 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): 55 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for outer_join (10:10): 118 wallclock secs ( 0.01 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for outer_join_found (10:10): 105 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): 56 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+
+Testing INSERT INTO ... SELECT
+Time for insert_select_1_key (1): 8 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for insert_select_2_keys (1): 13 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.02 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing delete
-Time for delete_key (10000): 7 wallclock secs ( 0.97 usr 1.25 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for delete_all (12): 22 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for delete_key (10000): 7 wallclock secs ( 0.97 usr 1.36 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for delete_all (12): 22 wallclock secs ( 0.00 usr 0.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Insert into table with 16 keys and with a primary key with 16 parts
-Time for insert_key (100000): 1593 wallclock secs (14.31 usr 14.47 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for insert_key (100000): 1447 wallclock secs (13.78 usr 13.42 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing update of keys
-Time for update_of_key (256): 479 wallclock secs ( 0.06 usr 0.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for update_of_key (256): 436 wallclock secs ( 0.01 usr 0.08 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Deleting rows from the table
-Time for delete_big_many_keys (128): 1498 wallclock secs ( 0.02 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for delete_big_many_keys (128): 1422 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Deleting everything from table
-Time for delete_all_many_keys (1): 1498 wallclock secs ( 0.02 usr 0.01 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for delete_all_many_keys (1): 1422 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting 100000 rows with multiple values
-Time for multiple_value_insert (100000): 9 wallclock secs ( 2.51 usr 0.24 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for multiple_value_insert (100000): 9 wallclock secs ( 2.34 usr 0.26 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: 5829 wallclock secs (581.28 usr 317.09 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 5599 wallclock secs (584.97 usr 320.95 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/Results/select-mysql-Linux_2.2.13_SMP_alpha b/sql-bench/Results/select-mysql-Linux_2.2.13_SMP_alpha new file mode 100644 index 00000000000..5b096dd8875 --- /dev/null +++ b/sql-bench/Results/select-mysql-Linux_2.2.13_SMP_alpha @@ -0,0 +1,23 @@ +Testing server 'MySQL 3.23.25 beta' at 2000-10-13 1:12:21 + +Testing the speed of selecting on keys that consist of many parts +The test-table has 10000 rows and the test is done with 500 ranges. + +Creating table +Inserting 10000 rows +Time to insert (10000): 3 wallclock secs ( 0.72 usr 0.58 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Testing big selects on the table +Time for select_big (70:17207): 1 wallclock secs ( 0.14 usr 0.09 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for select_range (410:1057904): 269 wallclock secs ( 9.47 usr 5.61 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for min_max_on_key (70000): 178 wallclock secs (20.97 usr 6.44 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for count_on_key (50000): 414 wallclock secs (15.80 usr 4.56 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Time for count_group_on_key_parts (1000:0): 44 wallclock secs ( 1.15 usr 0.58 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Testing count(distinct) on the table +Time for count_distinct (1000:2000): 94 wallclock secs ( 0.64 usr 0.20 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for count_distinct_group_on_key (1000:6000): 48 wallclock secs ( 0.37 usr 0.16 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for count_distinct_group_on_key_parts (1000:100000): 69 wallclock secs ( 1.10 usr 0.62 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for count_distinct_group (1000:100000): 69 wallclock secs ( 1.13 usr 0.58 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time for count_distinct_big (1000:10000000): 793 wallclock secs (79.09 usr 89.49 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Total time: 1982 wallclock secs (130.60 usr 108.91 sys + 0.00 cusr 0.00 csys = 0.00 CPU) diff --git a/sql-bench/Results/select-mysql-NT_4.0 b/sql-bench/Results/select-mysql-NT_4.0 index 9b8eaacc553..4981e28cee8 100644 --- a/sql-bench/Results/select-mysql-NT_4.0 +++ b/sql-bench/Results/select-mysql-NT_4.0 @@ -1,23 +1,23 @@ -Testing server 'MySQL 3.23.25 beta' at 2000-09-27 4:36:14
+Testing server 'MySQL 3.23.26 gamma' at 2000-10-13 15:53:40
Testing the speed of selecting on keys that consist of many parts
The test-table has 10000 rows and the test is done with 500 ranges.
Creating table
Inserting 10000 rows
-Time to insert (10000): 7 wallclock secs ( 1.25 usr 1.03 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to insert (10000): 7 wallclock secs ( 1.06 usr 1.39 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing big selects on the table
-Time for select_big (70:17207): 1 wallclock secs ( 0.44 usr 0.11 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for select_range (410:1057904): 187 wallclock secs (27.56 usr 9.31 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for min_max_on_key (70000): 197 wallclock secs (30.55 usr 11.14 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_on_key (50000): 402 wallclock secs (22.42 usr 8.89 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_big (70:17207): 1 wallclock secs ( 0.38 usr 0.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for select_range (410:1057904): 189 wallclock secs (26.94 usr 9.30 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for min_max_on_key (70000): 178 wallclock secs (29.56 usr 11.97 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_on_key (50000): 371 wallclock secs (20.88 usr 9.02 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_group_on_key_parts (1000:0): 47 wallclock secs ( 2.34 usr 0.75 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_group_on_key_parts (1000:0): 41 wallclock secs ( 2.72 usr 0.84 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Testing count(distinct) on the table
-Time for count_distinct (1000:2000): 97 wallclock secs ( 0.97 usr 0.36 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_distinct_group_on_key (1000:6000): 54 wallclock secs ( 0.61 usr 0.23 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_distinct_group_on_key_parts (1000:100000): 144 wallclock secs ( 2.44 usr 1.28 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_distinct_group (1000:100000): 144 wallclock secs ( 2.70 usr 0.98 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Time for count_distinct_big (1000:10000000): 1117 wallclock secs (225.77 usr 83.39 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Total time: 2397 wallclock secs (317.05 usr 117.49 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_distinct (1000:2000): 74 wallclock secs ( 0.95 usr 0.28 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_distinct_group_on_key (1000:6000): 40 wallclock secs ( 0.63 usr 0.27 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_distinct_group_on_key_parts (1000:100000): 149 wallclock secs ( 2.95 usr 1.06 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_distinct_group (1000:100000): 149 wallclock secs ( 2.50 usr 1.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for count_distinct_big (1000:10000000): 1095 wallclock secs (227.86 usr 86.19 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 2294 wallclock secs (316.44 usr 121.50 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/Results/wisconsin-mysql-Linux_2.2.13_SMP_alpha b/sql-bench/Results/wisconsin-mysql-Linux_2.2.13_SMP_alpha new file mode 100644 index 00000000000..f417d1b444c --- /dev/null +++ b/sql-bench/Results/wisconsin-mysql-Linux_2.2.13_SMP_alpha @@ -0,0 +1,14 @@ +Testing server 'MySQL 3.23.25 beta' at 2000-10-13 1:45:23 + +Wisconsin benchmark test + +Time for create_table (3): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Inserting data +Time to insert (31000): 15 wallclock secs ( 1.91 usr 1.77 sys + 0.00 cusr 0.00 csys = 0.00 CPU) +Time to delete_big (1): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Running actual benchmark +Time for wisc_benchmark (114): 4 wallclock secs ( 1.75 usr 0.93 sys + 0.00 cusr 0.00 csys = 0.00 CPU) + +Total time: 19 wallclock secs ( 3.67 usr 2.69 sys + 0.00 cusr 0.00 csys = 0.00 CPU) diff --git a/sql-bench/Results/wisconsin-mysql-NT_4.0 b/sql-bench/Results/wisconsin-mysql-NT_4.0 index 470ee49b563..e36922f1d3d 100644 --- a/sql-bench/Results/wisconsin-mysql-NT_4.0 +++ b/sql-bench/Results/wisconsin-mysql-NT_4.0 @@ -1,14 +1,14 @@ -Testing server 'MySQL 3.23.25 beta' at 2000-09-27 5:16:11
+Testing server 'MySQL 3.23.26 gamma' at 2000-10-13 16:31:55
Wisconsin benchmark test
Time for create_table (3): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Inserting data
-Time to insert (31000): 19 wallclock secs ( 2.39 usr 3.67 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time to insert (31000): 19 wallclock secs ( 2.59 usr 4.13 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Time to delete_big (1): 0 wallclock secs ( 0.00 usr 0.00 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
Running actual benchmark
-Time for wisc_benchmark (114): 9 wallclock secs ( 5.80 usr 1.64 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Time for wisc_benchmark (114): 9 wallclock secs ( 5.80 usr 1.47 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
-Total time: 28 wallclock secs ( 8.19 usr 5.31 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
+Total time: 28 wallclock secs ( 8.39 usr 5.59 sys + 0.00 cusr 0.00 csys = 0.00 CPU)
diff --git a/sql-bench/crash-me.sh b/sql-bench/crash-me.sh index 6357ffc17b1..6bb3eab63f9 100755 --- a/sql-bench/crash-me.sh +++ b/sql-bench/crash-me.sh @@ -39,7 +39,7 @@ # "3-byte int" or "same as xxx". -$version="1.49"; +$version="1.50"; use DBI; use Getopt::Long; @@ -271,8 +271,9 @@ if ($dbh->do("create table crash_q (a integer, b integer,c CHAR(10))")) report("Alter table alter column default",'alter_alter_col', "alter table crash_q alter b set default 10", "alter table crash_q alter b set default NULL"); - report("Alter table drop column",'alter_drop_col', - "alter table crash_q drop column b"); + report_one("Alter table drop column",'alter_drop_col', + [["alter table crash_q drop column b","yes"], + ["alter table crash_q drop column b restrict","with restrict/cascade"]]); report("Alter table rename table",'alter_rename_table', "alter table crash_q rename to crash_q1"); } @@ -757,7 +758,7 @@ try_and_report("Automatic rowid", "automatic_rowid", ["COS","cos","cos(0)","1.00000",0], ["COT","cot","cot(1)","0.64209262",0], ["DEGREES","degrees","degrees(6.283185)","360",0], - ["EXP","exp","exp(1)","2.718282",0], + ["EXP","exp","exp(1.0)","2.718282",0], ["FLOOR","floor","floor(2.5)","2",0], ["LOG","log","log(2)","0.693147",0], ["LOG10","log10","log10(10)","1",0], @@ -1047,7 +1048,11 @@ if ($limits{'functions'} eq 'yes') print "\n"; report("mixing of integer and float in expression","float_int_expr", "select 1+1.0 $end_query"); - + if ($limits{'func_odbc_exp'} eq 'yes') + { + report("No need to cast from integer to float", + "dont_require_cast_to_float", "select exp(1) $end_query"); + } check_and_report("Is 1+NULL = NULL","null_num_expr", [],"select 1+$numeric_null $end_query",[],undef(),4); $tmp=sql_concat("'a'",$char_null); @@ -1269,9 +1274,10 @@ report("temporary tables",'tempoary_table', "create temporary table crash_q (q integer not null)", "drop table crash_q"); -report("create table from select",'create_table_select', - "create table crash_q SELECT * from crash_me", - "drop table crash_q"); +report_one("create table from select",'create_table_select', + [["create table crash_q SELECT * from crash_me","yes"], + ["create table crash_q AS SELECT * from crash_me","with AS"]]); +$dbh->do("drop table crash_q"); report("index in create table",'index_in_create', "create table crash_q (q integer not null,index (q))", @@ -1628,9 +1634,9 @@ if (!report("many tables to drop table","multi_drop", } -report("-- as comment","comment_--", +report("-- as comment (ANSI)","comment_--", "select * from crash_me -- Testing of comments"); -report("// as comment","comment_//", +report("// as comment (ANSI)","comment_//", "select * from crash_me // Testing of comments"); report("# as comment","comment_#", "select * from crash_me # Testing of comments"); diff --git a/sql-bench/limits/mysql-3.23.cfg b/sql-bench/limits/mysql-3.23.cfg index 3dde8039f1a..186d1e740eb 100644 --- a/sql-bench/limits/mysql-3.23.cfg +++ b/sql-bench/limits/mysql-3.23.cfg @@ -1,4 +1,4 @@ -#This file is automaticly generated by crash-me 1.49 +#This file is automaticly generated by crash-me 1.50 NEG=yes # update of column= -column Need_cast_for_null=no # Need to cast NULL for arithmetic @@ -27,16 +27,16 @@ column_alias=yes # Column alias columns_in_group_by=+64 # number of columns in group by columns_in_order_by=+64 # number of columns in order by comment_#=yes # # as comment -comment_--=yes # -- as comment +comment_--=yes # -- as comment (ANSI) comment_/**/=yes # /* */ as comment -comment_//=no # // as comment +comment_//=no # // as comment (ANSI) compute=no # Compute connections=30 # Simultaneous connections (installation default) constraint_check=no # Column constraints constraint_check_table=no # Table constraints constraint_null=yes # NULL constraint (SyBase style) -crash_me_safe=no # crash me safe -crash_me_version=1.49 # crash me version +crash_me_safe=yes # crash me safe +crash_me_version=1.50 # crash me version create_default=yes # default value for column create_default_func=no # default value function for column create_if_not_exists=yes # create table if not exists @@ -51,6 +51,7 @@ date_one=yes # Supports 0001-01-01 dates date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates date_zero=yes # Supports 0000-00-00 dates domains=no # Domains (ANSI SQL) +dont_require_cast_to_float=yes # No need to cast from integer to float double_quotes=yes # Double '' as ' in strings drop_if_exists=yes # drop table if exists drop_index=with 'ON' # drop index diff --git a/sql-bench/limits/mysql.cfg b/sql-bench/limits/mysql.cfg index 3dde8039f1a..186d1e740eb 100644 --- a/sql-bench/limits/mysql.cfg +++ b/sql-bench/limits/mysql.cfg @@ -1,4 +1,4 @@ -#This file is automaticly generated by crash-me 1.49 +#This file is automaticly generated by crash-me 1.50 NEG=yes # update of column= -column Need_cast_for_null=no # Need to cast NULL for arithmetic @@ -27,16 +27,16 @@ column_alias=yes # Column alias columns_in_group_by=+64 # number of columns in group by columns_in_order_by=+64 # number of columns in order by comment_#=yes # # as comment -comment_--=yes # -- as comment +comment_--=yes # -- as comment (ANSI) comment_/**/=yes # /* */ as comment -comment_//=no # // as comment +comment_//=no # // as comment (ANSI) compute=no # Compute connections=30 # Simultaneous connections (installation default) constraint_check=no # Column constraints constraint_check_table=no # Table constraints constraint_null=yes # NULL constraint (SyBase style) -crash_me_safe=no # crash me safe -crash_me_version=1.49 # crash me version +crash_me_safe=yes # crash me safe +crash_me_version=1.50 # crash me version create_default=yes # default value for column create_default_func=no # default value function for column create_if_not_exists=yes # create table if not exists @@ -51,6 +51,7 @@ date_one=yes # Supports 0001-01-01 dates date_with_YY=yes # Supports YY-MM-DD 2000 compilant dates date_zero=yes # Supports 0000-00-00 dates domains=no # Domains (ANSI SQL) +dont_require_cast_to_float=yes # No need to cast from integer to float double_quotes=yes # Double '' as ' in strings drop_if_exists=yes # drop table if exists drop_index=with 'ON' # drop index diff --git a/sql-bench/print-limit-table b/sql-bench/print-limit-table index 787eb88ae07..183f2453175 100755 --- a/sql-bench/print-limit-table +++ b/sql-bench/print-limit-table @@ -161,7 +161,7 @@ print_match("Order by and group by","order|having|group"); print_match("Join methods",'join|subqueries|multi_table|select_table_update'); print_match("String handling","string|select_constant|quote_with|double_quotes|end_space"); print_match("Quoting","quote"); -print_match("Name limits","name"); +print_match("Name limits","name","alter"); print_match("Index limits",'index|primary|unique'); print_match("Type limits",'char|float|binary|text_size|date|end_space'); print_match("Expression limits",'expression|conditions|select_limit'); diff --git a/sql-bench/test-insert.sh b/sql-bench/test-insert.sh index 129c37fac03..ec269df5d3b 100755 --- a/sql-bench/test-insert.sh +++ b/sql-bench/test-insert.sh @@ -901,6 +901,16 @@ if ($limits->{'insert_select'}) $end_time=new Benchmark; print "Time for drop table(2): " . timestr(timediff($end_time, $loop_time),"all") . "\n"; + + if ($opt_fast && defined($server->{vacuum})) + { + $server->vacuum(1,\$dbh); + } + if ($server->small_rollback_segment()) + { + $dbh->disconnect; # close connection + $dbh = $server->connect(); + } } diff --git a/sql/field.cc b/sql/field.cc index 4ef95d6e102..67bc84c0e3b 100644 --- a/sql/field.cc +++ b/sql/field.cc @@ -4550,7 +4550,7 @@ Field *make_field(char *ptr, uint32 field_length, /* Create a field suitable for create of table */ -create_field::create_field(Field *old_field,bool ignore_default) +create_field::create_field(Field *old_field,Field *orig_field) { field= old_field; field_name=change=old_field->field_name; @@ -4574,15 +4574,24 @@ create_field::create_field(Field *old_field,bool ignore_default) interval= ((Field_enum*) old_field)->typelib; else interval=0; - if (!ignore_default && !old_field->is_real_null() && ! (flags & BLOB_FLAG) && - old_field->type() != FIELD_TYPE_TIMESTAMP && old_field->ptr) + if (!old_field->is_real_null() && ! (flags & BLOB_FLAG) && + old_field->type() != FIELD_TYPE_TIMESTAMP && old_field->ptr && + orig_field) { char buff[MAX_FIELD_WIDTH],*pos; - String tmp(buff,sizeof(buff)); - field->val_str(&tmp,&tmp); - pos= (char*) sql_memdup(tmp.ptr(),tmp.length()+1); - pos[tmp.length()]=0; - def=new Item_string(pos,tmp.length()); + String tmp(buff,sizeof(buff)),*res; + + /* Get the value from record[2] (the default value row) */ + my_ptrdiff_t diff= (my_ptrdiff_t) (orig_field->table->rec_buff_length*2); + orig_field->move_field(diff); // Points now at record[2] + res=orig_field->val_str(&tmp,&tmp); + orig_field->move_field(-diff); // Back to record[0] + if (res) // If not NULL value + { + pos= (char*) sql_memdup(tmp.ptr(),tmp.length()+1); + pos[tmp.length()]=0; + def=new Item_string(pos,tmp.length()); + } } else def=0; diff --git a/sql/field.h b/sql/field.h index 075e0feea96..a50c6efa5d6 100644 --- a/sql/field.h +++ b/sql/field.h @@ -986,7 +986,7 @@ public: uint8 row,col,sc_length,interval_id; // For rea_create_table uint offset,pack_flag; create_field() :after(0) {} - create_field(Field *field,bool ignore_default=0); + create_field(Field *field, Field *orig_field); }; diff --git a/sql/log.cc b/sql/log.cc index c5e5c8ff7a1..d245f49bf7d 100644 --- a/sql/log.cc +++ b/sql/log.cc @@ -578,7 +578,7 @@ void MYSQL_LOG::write(THD *thd,const char *query, uint query_length, /* For slow query log */ if (!(specialflag & SPECIAL_LONG_LOG_FORMAT)) current_time=time(NULL); - fprintf(file,"# Time: %lu Lock_time: %lu Rows_sent %lu\n", + fprintf(file,"# Time: %lu Lock_time: %lu Rows_sent: %lu\n", (ulong) (current_time - query_start), (ulong) (thd->time_after_lock - query_start), (ulong) thd->sent_row_count); diff --git a/sql/log_event.cc b/sql/log_event.cc index 5d1aad66954..3e717ce4d6c 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -264,22 +264,22 @@ void Log_event::print_header(FILE* file) fprintf(file, " server id %ld ", server_id); } -void Log_event::print_timestamp(FILE* file, time_t* ts = 0) +void Log_event::print_timestamp(FILE* file, time_t* ts) { - struct tm tm_tmp; - if(!ts) - { - ts = &when; - } - localtime_r(ts,&tm_tmp); - - fprintf(file,"%02d%02d%02d %2d:%02d:%02d", - tm_tmp.tm_year % 100, - tm_tmp.tm_mon+1, - tm_tmp.tm_mday, - tm_tmp.tm_hour, - tm_tmp.tm_min, - tm_tmp.tm_sec); + struct tm tm_tmp; + if (!ts) + { + ts = &when; + } + localtime_r(ts,&tm_tmp); + + fprintf(file,"%02d%02d%02d %2d:%02d:%02d", + tm_tmp.tm_year % 100, + tm_tmp.tm_mon+1, + tm_tmp.tm_mday, + tm_tmp.tm_hour, + tm_tmp.tm_min, + tm_tmp.tm_sec); } diff --git a/sql/mysqlbinlog.cc b/sql/mysqlbinlog.cc index 505604ea7d4..5c94d5d5a57 100644 --- a/sql/mysqlbinlog.cc +++ b/sql/mysqlbinlog.cc @@ -327,7 +327,7 @@ static void dump_local_log_entries(const char* logname) if(!position) { char magic[4]; - if(my_fread(file, magic, sizeof(magic), MYF(MY_NABP|MY_WME))) + if(my_fread(file, (byte*) magic, sizeof(magic), MYF(MY_NABP|MY_WME))) die("I/O error reading binlog magic number"); if(memcmp(magic, BINLOG_MAGIC, 4)) die("Bad magic number"); diff --git a/sql/mysqld.cc b/sql/mysqld.cc index b794bff4075..aaeb056e30b 100644 --- a/sql/mysqld.cc +++ b/sql/mysqld.cc @@ -2915,12 +2915,11 @@ static void get_options(int argc,char **argv) default_table_type=DB_TYPE_ISAM; myisam_delay_key_write=0; myisam_concurrent_insert=0; - myisam_recover_options= 0; + myisam_recover_options= HA_RECOVER_NONE; break; case (int) OPT_SAFE: opt_specialflag|= SPECIAL_SAFE_MODE; myisam_delay_key_write=0; - myisam_concurrent_insert=0; myisam_recover_options= HA_RECOVER_NONE; // To be changed break; case (int) OPT_SKIP_CONCURRENT_INSERT: diff --git a/sql/sql_base.cc b/sql/sql_base.cc index 03b799aee7d..ab42d393925 100644 --- a/sql/sql_base.cc +++ b/sql/sql_base.cc @@ -33,8 +33,8 @@ TABLE *unused_tables; /* Used by mysql_test */ HASH open_cache; /* Used by mysql_test */ -static int open_unireg_entry(TABLE *entry,const char *db,const char *name, - const char *alias, bool locked); +static int open_unireg_entry(THD *thd,TABLE *entry,const char *db, + const char *name, const char *alias, bool locked); static bool insert_fields(THD *thd,TABLE_LIST *tables, const char *table_name, List_iterator<Item> *it); static void free_cache_entry(TABLE *entry); @@ -572,7 +572,7 @@ TABLE *reopen_name_locked_table(THD* thd, TABLE_LIST* table_list) key_length=(uint) (strmov(strmov(key,db)+1,table_name)-key)+1; pthread_mutex_lock(&LOCK_open); - if (open_unireg_entry(table, db, table_name, table_name,0) || + if (open_unireg_entry(thd, table, db, table_name, table_name,0) || !(table->table_cache_key =memdup_root(&table->mem_root,(char*) key, key_length))) { @@ -706,7 +706,7 @@ TABLE *open_table(THD *thd,const char *db,const char *table_name, /* make a new table */ if (!(table=(TABLE*) my_malloc(sizeof(*table),MYF(MY_WME)))) DBUG_RETURN(NULL); - if (open_unireg_entry(table,db,table_name,alias,0) || + if (open_unireg_entry(thd, table,db,table_name,alias,0) || !(table->table_cache_key=memdup_root(&table->mem_root,(char*) key, key_length))) { @@ -816,7 +816,8 @@ bool reopen_table(TABLE *table,bool locked) if (!locked) VOID(pthread_mutex_lock(&LOCK_open)); - if (open_unireg_entry(&tmp,db,table_name,table->table_name,locked)) + if (open_unireg_entry(current_thd,&tmp,db,table_name,table->table_name, + locked)) goto end; free_io_cache(table); @@ -1110,10 +1111,11 @@ void abort_locked_tables(THD *thd,const char *db, const char *table_name) ** Purpose : Load a table definition from file and open unireg table ** Args : entry with DB and table given ** Returns : 0 if ok +** Note that the extra argument for open is taken from thd->open_options */ -static int open_unireg_entry(TABLE *entry,const char *db,const char *name, - const char *alias, bool locked) +static int open_unireg_entry(THD *thd, TABLE *entry, const char *db, + const char *name, const char *alias, bool locked) { char path[FN_REFLEN]; int error; @@ -1124,10 +1126,8 @@ static int open_unireg_entry(TABLE *entry,const char *db,const char *name, (uint) (HA_OPEN_KEYFILE | HA_OPEN_RNDFILE | HA_GET_INDEX | HA_TRY_READ_ONLY), READ_KEYINFO | COMPUTE_TYPES | EXTRA_RECORD, - ha_open_options, - entry)) + thd->open_options, entry)) { - THD *thd=current_thd; if (!entry->crashed) goto err; // Can't repair the table diff --git a/sql/sql_class.cc b/sql/sql_class.cc index 31d54a621ac..b65c5d1978f 100644 --- a/sql/sql_class.cc +++ b/sql/sql_class.cc @@ -96,6 +96,7 @@ THD::THD() start_time=(time_t) 0; last_nx_table = last_nx_db = 0; inactive_timeout=net_wait_timeout; + open_options=ha_open_options; cond_count=0; command=COM_CONNECT; set_query_id=1; diff --git a/sql/sql_class.h b/sql/sql_class.h index 751fdfc1a0d..4ba3ee87144 100644 --- a/sql/sql_class.h +++ b/sql/sql_class.h @@ -287,7 +287,7 @@ public: long dbug_thread_id; pthread_t real_id; uint current_tablenr,tmp_table,cond_count,col_access,query_length; - uint server_status; + uint server_status,open_options; char scramble[9]; bool set_query_id,locked,count_cuted_fields,some_tables_deleted; bool no_errors, allow_sum_func, password, fatal_error; @@ -300,6 +300,7 @@ public: bool store_globals(); inline time_t query_start() { query_start_used=1; return start_time; } inline void set_time() { if (!user_time) time_after_lock=time(&start_time); } + inline void end_time() { time(&start_time); } inline void set_time(time_t t) { time_after_lock=start_time=t; user_time=1; } inline void lock_time() { time(&time_after_lock); } inline void insert_id(ulonglong id) diff --git a/sql/sql_parse.cc b/sql/sql_parse.cc index eecd33ccf5f..ca8a7b5fe14 100644 --- a/sql/sql_parse.cc +++ b/sql/sql_parse.cc @@ -807,13 +807,15 @@ bool do_command(THD *thd) send_error(net,0); // End of memory ? time_t start_of_query=thd->start_time; - thd->set_time(); + thd->end_time(); // Set start time /* If not reading from backup and if the query took too long */ - if (!thd->user_time && - (ulong) (thd->start_time - start_of_query) > long_query_time) + if (!thd->user_time) { - long_query_count++; - mysql_slow_log.write(thd, thd->query, thd->query_length, start_of_query); + if ((ulong) (thd->start_time - thd->time_after_lock) > long_query_time) + { + long_query_count++; + mysql_slow_log.write(thd, thd->query, thd->query_length, start_of_query); + } } VOID(pthread_mutex_lock(&LOCK_thread_count)); // For process list thd->proc_info=0; diff --git a/sql/sql_repl.cc b/sql/sql_repl.cc index 0b955f43f1e..53a5b00d084 100644 --- a/sql/sql_repl.cc +++ b/sql/sql_repl.cc @@ -131,7 +131,7 @@ void mysql_binlog_send(THD* thd, char* log_ident, ulong pos, ushort flags) goto err; } - if(my_fread(log, magic, sizeof(magic), MYF(MY_NABP|MY_WME))) + if(my_fread(log, (byte*) magic, sizeof(magic), MYF(MY_NABP|MY_WME))) { errmsg = "I/O error reading binlog magic number"; goto err; @@ -321,7 +321,7 @@ sweepstakes if you report the bug"; } //check the magic - if(my_fread(log, magic, sizeof(magic), MYF(MY_NABP|MY_WME))) + if(my_fread(log, (byte*) magic, sizeof(magic), MYF(MY_NABP|MY_WME))) { errmsg = "I/O error reading binlog magic number"; goto err; diff --git a/sql/sql_select.cc b/sql/sql_select.cc index a804870a69e..7fcecb8b24d 100644 --- a/sql/sql_select.cc +++ b/sql/sql_select.cc @@ -399,6 +399,11 @@ mysql_select(THD *thd,TABLE_LIST *tables,List<Item> &fields,COND *conds, } if (join.const_tables && !thd->locked_tables) mysql_unlock_some_tables(thd, join.table,join.const_tables); + if (!conds && join.outer_join) + { + /* Handle the case where we have an OUTER JOIN without a WHERE */ + conds=new Item_int((longlong) 1,1); // Always true + } select=make_select(*join.table, join.const_table_map, join.const_table_map,conds,&error); if (error) @@ -856,6 +861,7 @@ make_join_statistics(JOIN *join,TABLE_LIST *tables,COND *conds, } } stat_vector[i]=0; + join->outer_join=outer_join; /* ** If outer join: Re-arrange tables in stat_vector so that outer join @@ -1553,12 +1559,14 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count, double best,best_time,records; best=best_time=records=DBL_MAX; KEYUSE *best_key=0; + uint best_max_key_part=0; if (s->keyuse) { /* Use key if possible */ TABLE *table=s->table; KEYUSE *keyuse,*start_key=0; double best_records=DBL_MAX; + uint max_key_part=0; /* Test how we can use keys */ rec= s->records/MATCHING_ROWS_IN_OTHER_TABLE; /* Assumed records/key */ @@ -1576,34 +1584,34 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count, uint keypart=keyuse->keypart; do { - if(!ft_key) + if (!ft_key) { - table_map map; - if (!(rest_tables & keyuse->used_tables)) - { - found_part|= (key_part_map) 1 << keypart; - found_ref|= keyuse->used_tables; - } - /* - ** If we find a ref, assume this table matches a proportional - ** part of this table. - ** For example 100 records matching this table with 5000 records - ** gives 5000/100 = 50 records per key - ** Constant tables are ignored and to avoid bad matches, - ** we don't make rec less than 100. - */ - if (keyuse->used_tables & - (map=(keyuse->used_tables & ~join->const_table_map))) - { - uint tablenr; - for (tablenr=0 ; ! (map & 1) ; map>>=1, tablenr++) ; - if (map == 1) // Only one table + table_map map; + if (!(rest_tables & keyuse->used_tables)) { - TABLE *tmp_table=join->all_tables[tablenr]; - if (rec > tmp_table->file->records && rec > 100) - rec=max(tmp_table->file->records,100); + found_part|= (key_part_map) 1 << keypart; + found_ref|= keyuse->used_tables; + } + /* + ** If we find a ref, assume this table matches a proportional + ** part of this table. + ** For example 100 records matching a table with 5000 records + ** gives 5000/100 = 50 records per key + ** Constant tables are ignored and to avoid bad matches, + ** we don't make rec less than 100. + */ + if (keyuse->used_tables & + (map=(keyuse->used_tables & ~join->const_table_map))) + { + uint tablenr; + for (tablenr=0 ; ! (map & 1) ; map>>=1, tablenr++) ; + if (map == 1) // Only one table + { + TABLE *tmp_table=join->all_tables[tablenr]; + if (rec > tmp_table->file->records && rec > 100) + rec=max(tmp_table->file->records,100); + } } - } } keyuse++; } while (keyuse->table == table && keyuse->key == key && @@ -1637,6 +1645,7 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count, */ if (found_part == PREV_BITS(uint,keyinfo->key_parts)) { /* use eq key */ + max_key_part= (uint) ~0; if ((keyinfo->flags & (HA_NOSAME | HA_NULL_PART_KEY)) == HA_NOSAME) { tmp=prev_record_reads(join,found_ref); @@ -1686,7 +1695,7 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count, if ((found_part & 1) && !(table->file->option_flag() & HA_ONLY_WHOLE_INDEX)) { - uint max_key_part=max_part_bit(found_part); + max_key_part=max_part_bit(found_part); /* Check if quick_range could determinate how many rows we will match */ @@ -1754,11 +1763,19 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count, best=tmp; best_records=records; best_key=start_key; + best_max_key_part=max_key_part; } } records=best_records; } - if (records >= s->found_records || best > s->read_time) + + /* + Don't test table scan if it can't be better. + Prefer key lookup if we would use the same key for scanning. + */ + if ((records >= s->found_records || best > s->read_time) && + !(s->quick && best_key && s->quick->index == best_key->key && + best_max_key_part >= s->table->quick_key_parts[best_key->key])) { // Check full join if (s->on_expr) { @@ -1775,6 +1792,10 @@ find_best(JOIN *join,table_map rest_tables,uint idx,double record_count, (tmp + record_count/(double) TIME_FOR_COMPARE*s->found_records < best + record_count/(double) TIME_FOR_COMPARE*records)) { + /* + If the table has a range (s->quick is set) make_join_select() + will ensure that this will be used + */ best=tmp; records=s->found_records; best_key=0; @@ -2193,6 +2214,14 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond) table_map current_map= tab->table->map; used_tables|=current_map; COND *tmp=make_cond_for_table(cond,used_tables,current_map); + if (!tmp && tab->quick) + { // Outer join + /* + Hack to handle the case where we only refer to a table + in the ON part of an OUTER JOIN. + */ + tmp=new Item_int((longlong) 1,1); // Always true + } if (tmp) { DBUG_EXECUTE("where",print_where(tmp,tab->table->table_name);); @@ -2204,6 +2233,8 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond) sel->head=tab->table; if (tab->quick) { + /* Use quick key read if it's a constant and it's not used + with key reading */ if (tab->needed_reg == 0 && tab->type != JT_EQ_REF && (tab->type != JT_REF || (uint) tab->ref.key == tab->quick->index)) @@ -2231,19 +2262,23 @@ make_join_select(JOIN *join,SQL_SELECT *select,COND *cond) DBUG_RETURN(1); // Impossible range /* We plan to scan all rows. - Check again if we should use an index instead if - we could have used an column from a previous table in - the index or if we are using limit and this is the first table + Check again if we should use an index. + We could have used an column from a previous table in + the index if we are using limit and this is the first table */ if ((tab->keys & ~ tab->const_keys && i > 0) || tab->const_keys && i == join->const_tables && join->thd->select_limit < join->best_positions[i].records_read) { + /* Join with outer join condition */ + COND *orig_cond=sel->cond; + sel->cond=and_conds(sel->cond,tab->on_expr); if (sel->test_quick_select(tab->keys, used_tables & ~ current_map, join->thd->select_limit) < 0) - DBUG_RETURN(1); // Impossible range + DBUG_RETURN(1); // Impossible range + sel->cond=orig_cond; } else { diff --git a/sql/sql_select.h b/sql/sql_select.h index 4bee0bf2c3d..8ac00dde4c5 100644 --- a/sql/sql_select.h +++ b/sql/sql_select.h @@ -147,7 +147,7 @@ class JOIN { uint tables,const_tables; uint send_group_parts; bool sort_and_group,first_record,full_join,group, no_field_update; - table_map const_table_map; + table_map const_table_map,outer_join; ha_rows send_records,found_records; POSITION positions[MAX_TABLES+1],best_positions[MAX_TABLES+1]; double best_read; diff --git a/sql/sql_table.cc b/sql/sql_table.cc index 2343e06b12a..23c0f1d05ec 100644 --- a/sql/sql_table.cc +++ b/sql/sql_table.cc @@ -620,7 +620,10 @@ TABLE *create_table_from_items(THD *thd, HA_CREATE_INFO *create_info, Field *field=create_tmp_field(&tmp_table,item,item->type(), (Item_result_field***) 0, &tmp_field,0,0); - if (!field || !(cr_field=new create_field(field,1))) + if (!field || + !(cr_field=new create_field(field,(item->type() == Item::FIELD_ITEM ? + ((Item_field *)item)->field : NULL) + ))) DBUG_RETURN(0); extra_fields->push_back(cr_field); } @@ -833,9 +836,13 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables, { char table_name[NAME_LEN*2+2]; char* db = (table->db) ? table->db : thd->db; + bool fatal_error=0; strxmov(table_name,db ? db : "",".",table->name,NullS); + if (operator_func == &handler::repair || operator_func == &handler::check) + thd->open_options|= HA_OPEN_FOR_REPAIR; table->table = open_ltable(thd, table, lock_type); + thd->open_options&= ~HA_OPEN_FOR_REPAIR; packet->length(0); if (operator_func == &handler::restore) { @@ -909,6 +916,7 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables, case HA_ADMIN_CORRUPT: net_store_data(packet, "error"); net_store_data(packet, "Corrupt"); + fatal_error=1; break; case HA_ADMIN_INVALID: @@ -919,8 +927,11 @@ static int mysql_admin_table(THD* thd, TABLE_LIST* tables, default: // Probably HA_ADMIN_INTERNAL_ERROR net_store_data(packet, "error"); net_store_data(packet, "Unknown - internal error during operation"); + fatal_error=1; break; } + if (fatal_error) + table->table->flush_version=0; // Force close of table close_thread_tables(thd); if (my_net_write(&thd->net, (char*) packet->ptr(), packet->length())) @@ -1150,7 +1161,7 @@ int mysql_alter_table(THD *thd,char *new_db, char *new_name, } else { // Use old field value - create_list.push_back(def=new create_field(field)); + create_list.push_back(def=new create_field(field,field)); if (def->sql_type == FIELD_TYPE_TIMESTAMP) use_timestamp=1; diff --git a/sql/sql_yacc.yy b/sql/sql_yacc.yy index ae1296153e5..6e4d8a3d279 100644 --- a/sql/sql_yacc.yy +++ b/sql/sql_yacc.yy @@ -509,7 +509,7 @@ bool my_yyoverflow(short **a, YYSTYPE **b,int *yystacksize); flush_options flush_option insert_lock_option replace_lock_option equal optional_braces opt_key_definition key_usage_list2 opt_mi_check_type opt_to mi_check_types normal_join - table_to_table_list table_to_table opt_table_list + table_to_table_list table_to_table opt_table_list opt_as END_OF_INPUT %type <NONE> @@ -673,13 +673,17 @@ create2: | opt_create_table_options create3 {} create3: - /* empty*/ {} - | opt_duplicate SELECT_SYM + /* empty */ {} + | opt_duplicate opt_as SELECT_SYM { mysql_init_select(Lex); } select_options select_item_list opt_select_from {} +opt_as: + /* empty */ {} + | AS {} + opt_table_options: /* empty */ { $$= 0; } | table_options { $$= $1;} |