diff options
author | unknown <monty@hundin.mysql.fi> | 2001-11-29 21:46:51 +0200 |
---|---|---|
committer | unknown <monty@hundin.mysql.fi> | 2001-11-29 21:46:51 +0200 |
commit | c2689648cfe60d280c5a3da350f57527745deab3 (patch) | |
tree | ca1de5e435dc38ba3f7f3b2ae2fb610b292baef0 | |
parent | c90f67fb06430e16e3c37d1420591ac7419a40c4 (diff) | |
download | mariadb-git-c2689648cfe60d280c5a3da350f57527745deab3.tar.gz |
Fix not critical MyISAM bug in locking.
Free character sets properly (for embedded).
Add missing mutex in HANDLER CLOSE
Build-tools/Do-compile:
Update for gcc 3.0
Docs/manual.texi:
Update for gcc 3.0
myisam/mi_locking.c:
Fix not critical bug in locking
myisam/myisamdef.h:
Fix not critical bug in locking
mysys/my_init.c:
Free character sets properly
mysys/my_seek.c:
Remove warning
sql-bench/server-cfg.sh:
Fix benchmarks to run with MySQL
sql/sql_handler.cc:
Add missing mutex
sql/sql_update.cc:
Clean up procinfo
-rwxr-xr-x | Build-tools/Do-compile | 7 | ||||
-rw-r--r-- | Docs/manual.texi | 7 | ||||
-rw-r--r-- | myisam/mi_locking.c | 7 | ||||
-rw-r--r-- | myisam/myisamdef.h | 2 | ||||
-rw-r--r-- | mysys/my_init.c | 2 | ||||
-rw-r--r-- | mysys/my_seek.c | 2 | ||||
-rw-r--r-- | sql-bench/server-cfg.sh | 76 | ||||
-rw-r--r-- | sql/sql_handler.cc | 4 | ||||
-rw-r--r-- | sql/sql_update.cc | 4 |
9 files changed, 97 insertions, 14 deletions
diff --git a/Build-tools/Do-compile b/Build-tools/Do-compile index 76b94f314c8..b3b401d7e8d 100755 --- a/Build-tools/Do-compile +++ b/Build-tools/Do-compile @@ -19,7 +19,7 @@ if ($opt_innodb || $opt_bdb) chomp($host=`hostname`); $full_host_name=$host; -info("Compiling MySQL$version_suffix at $host, stage: $opt_stage\n"); +info("Compiling MySQL$version_suffix at $host$suffix, stage: $opt_stage\n"); $connect_option= ($opt_tcpip ? "--host=$host" : ""); $host =~ /^([^.-]*)/; $host=$1 . $opt_suffix; @@ -36,6 +36,10 @@ if (defined($gcc_version) && ! $opt_config_env) { $opt_config_env= 'CC=gcc CFLAGS="-O2 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O2 -fno-omit-frame-pointer"'; } + elsif ($tmp =~ /version 3\.0\./) + { + $opt_config_env= 'CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti"'; + } else { $opt_config_env= 'CC=gcc CFLAGS="-O3 -fno-omit-frame-pointer" CXX=gcc CXXFLAGS="-O3 -fno-omit-frame-pointer -felide-constructors -fno-exceptions -fno-rtti"'; @@ -107,7 +111,6 @@ $|=1; safe_cd("$host"); if ($opt_stage == 0 && ! $opt_use_old_distribution) { - my ($name); safe_system("gunzip < $opt_distribution | $tar xf -"); # Fix file times; This is needed because the time for files may be diff --git a/Docs/manual.texi b/Docs/manual.texi index db82b029848..9b46fe246bd 100644 --- a/Docs/manual.texi +++ b/Docs/manual.texi @@ -7704,6 +7704,11 @@ also work. There have been some problems with the @code{glibc} RPMs from RedHat, so if you have problems, check whether or not there are any updates! The @code{glibc} 2.0.7-19 and 2.0.7-29 RPMs are known to work. +If you are using gcc 3.0 and above to compile MySQL, you must install +the @code{libstdc++v3} library before compiling MySQL; If you don't do +this you will get an error about a missing @code{__cxa_pure_virtual} +symbol during linking! + On some older Linux distributions, @code{configure} may produce an error like this: @@ -7757,7 +7762,7 @@ shell> CXX=gcc ./configure @end example If you are running gcc 3.0 and above, you can't use the above trick with -CXX=gcc, but you have to install libstd++. +setting to CXX=gcc. @node Linux-SPARC, Linux-Alpha, Linux-x86, Linux @subsubsection Linux SPARC Notes diff --git a/myisam/mi_locking.c b/myisam/mi_locking.c index b8ffc300fa9..68ef52ea819 100644 --- a/myisam/mi_locking.c +++ b/myisam/mi_locking.c @@ -305,10 +305,9 @@ int _mi_readinfo(register MI_INFO *info, int lock_type, int check_keybuffer) MYISAM_SHARE *share=info->s; if (!share->tot_locks) { - if ((info->tmp_lock_type=lock_type) != F_RDLCK) - if (my_lock(share->kfile,lock_type,0L,F_TO_EOF, - info->lock_wait | MY_SEEK_NOT_DONE)) - DBUG_RETURN(1); + if (my_lock(share->kfile,lock_type,0L,F_TO_EOF, + info->lock_wait | MY_SEEK_NOT_DONE)) + DBUG_RETURN(1); if (mi_state_info_read_dsk(share->kfile, &share->state, 1)) { int error=my_errno ? my_errno : -1; diff --git a/myisam/myisamdef.h b/myisam/myisamdef.h index 0f48216ccbf..e8b9c1b83ec 100644 --- a/myisam/myisamdef.h +++ b/myisam/myisamdef.h @@ -589,7 +589,7 @@ enum myisam_log_commands { #define myisam_log_record(a,b,c,d,e) if (myisam_log_file >= 0) _myisam_log_record(a,b,c,d,e) #define fast_mi_writeinfo(INFO) if (!(INFO)->s->tot_locks) (void) _mi_writeinfo((INFO),0) -#define fast_mi_readinfo(INFO) (!(INFO)->lock_type == F_UNLCK) && _mi_readinfo((INFO),F_RDLCK,1) +#define fast_mi_readinfo(INFO) ((INFO)->lock_type == F_UNLCK) && _mi_readinfo((INFO),F_RDLCK,1) #ifdef __cplusplus extern "C" { diff --git a/mysys/my_init.c b/mysys/my_init.c index f39b3f0ed6d..87121f35bb3 100644 --- a/mysys/my_init.c +++ b/mysys/my_init.c @@ -125,6 +125,7 @@ void my_end(int infoflag) DBUG_PRINT("error",("%s",errbuff[0])); } } + free_charsets(); if (infoflag & MY_GIVE_INFO || info_file != stderr) { #ifdef HAVE_GETRUSAGE @@ -149,7 +150,6 @@ Voluntary context switches %ld, Involuntary context switches %ld\n", #if defined(MSDOS) && !defined(__WIN__) fprintf(info_file,"\nRun time: %.1f\n",(double) clock()/CLOCKS_PER_SEC); #endif - free_charsets(); #if defined(SAFEMALLOC) TERMINATE(stderr); /* Give statistic on screen */ #elif defined(__WIN__) && defined(_MSC_VER) diff --git a/mysys/my_seek.c b/mysys/my_seek.c index 87da4d93cb7..5ee094c1be4 100644 --- a/mysys/my_seek.c +++ b/mysys/my_seek.c @@ -35,7 +35,7 @@ my_off_t my_seek(File fd, my_off_t pos, int whence, DBUG_PRINT("error",("lseek: %lu, errno: %d",newpos,errno)); DBUG_RETURN(MY_FILEPOS_ERROR); } - if (newpos != pos) + if ((my_off_t) newpos != pos) { DBUG_PRINT("exit",("pos: %lu", (ulong) newpos)); } diff --git a/sql-bench/server-cfg.sh b/sql-bench/server-cfg.sh index 1e755be8f43..744a2217a96 100644 --- a/sql-bench/server-cfg.sh +++ b/sql-bench/server-cfg.sh @@ -335,6 +335,12 @@ sub reconnect_on_errors return 0; } +sub fix_for_insert +{ + my ($self,$cmd) = @_; + return $cmd; +} + # # Optimize tables for better performance # @@ -354,7 +360,6 @@ sub vacuum } } - ############################################################################# # Definitions for mSQL ############################################################################# @@ -548,6 +553,12 @@ sub reconnect_on_errors return 0; } +sub fix_for_insert +{ + my ($self,$cmd) = @_; + return $cmd; +} + ############################################################################# # Definitions for PostgreSQL # ############################################################################# @@ -806,6 +817,12 @@ sub reconnect_on_errors return 0; } +sub fix_for_insert +{ + my ($self,$cmd) = @_; + return $cmd; +} + sub vacuum { my ($self,$full_vacuum,$dbh_ref,@tables)=@_; @@ -1072,6 +1089,12 @@ sub small_rollback_segment return 0; } +sub fix_for_insert +{ + my ($self,$cmd) = @_; + return $cmd; +} + sub reconnect_on_errors { return 0; @@ -1811,7 +1834,7 @@ sub query { sub fix_for_insert { my ($self,$cmd) = @_; - $cmd =~ s/\\'//g; + $cmd =~ s/\\\'//g; return $cmd; } @@ -1844,6 +1867,7 @@ sub reconnect_on_errors return 0; } + ############################################################################# # Configuration for Access ############################################################################# @@ -2021,6 +2045,12 @@ sub reconnect_on_errors return 1; } +sub fix_for_insert +{ + my ($self,$cmd) = @_; + return $cmd; +} + ############################################################################# # Configuration for Microsoft SQL server ############################################################################# @@ -2209,6 +2239,12 @@ sub reconnect_on_errors return 0; } +sub fix_for_insert +{ + my ($self,$cmd) = @_; + return $cmd; +} + ############################################################################# # Configuration for Sybase ############################################################################# @@ -2384,6 +2420,12 @@ sub reconnect_on_errors return 0; } +sub fix_for_insert +{ + my ($self,$cmd) = @_; + return $cmd; +} + # # optimize the tables .... # @@ -2617,6 +2659,12 @@ sub reconnect_on_errors return 0; } +sub fix_for_insert +{ + my ($self,$cmd) = @_; + return $cmd; +} + ############################################################################# # Configuration for IBM DB2 ############################################################################# @@ -2791,6 +2839,12 @@ sub reconnect_on_errors return 0; } +sub fix_for_insert +{ + my ($self,$cmd) = @_; + return $cmd; +} + ############################################################################# # Configuration for MIMER ############################################################################# @@ -2992,6 +3046,12 @@ sub reconnect_on_errors return 0; } +sub fix_for_insert +{ + my ($self,$cmd) = @_; + return $cmd; +} + ############################################################################# # Configuration for InterBase ############################################################################# @@ -3205,6 +3265,12 @@ sub reconnect_on_errors return 1; } +sub fix_for_insert +{ + my ($self,$cmd) = @_; + return $cmd; +} + ############################################################################# # Configuration for FrontBase ############################################################################# @@ -3410,4 +3476,10 @@ sub reconnect_on_errors return 1; } +sub fix_for_insert +{ + my ($self,$cmd) = @_; + return $cmd; +} + 1; diff --git a/sql/sql_handler.cc b/sql/sql_handler.cc index c7fb237ccf2..46cbe5e44d3 100644 --- a/sql/sql_handler.cc +++ b/sql/sql_handler.cc @@ -63,7 +63,11 @@ int mysql_ha_close(THD *thd, TABLE_LIST *tables) TABLE **ptr=find_table_ptr_by_name(thd, tables->db, tables->name); if (*ptr) + { + VOID(pthread_mutex_lock(&LOCK_open)); close_thread_table(thd, ptr); + VOID(pthread_mutex_unlock(&LOCK_open)); + } send_ok(&thd->net); return 0; diff --git a/sql/sql_update.cc b/sql/sql_update.cc index 3111268849f..0422d9664b6 100644 --- a/sql/sql_update.cc +++ b/sql/sql_update.cc @@ -199,7 +199,7 @@ int mysql_update(THD *thd, } init_read_record(&info,thd,table,select,0,1); - thd->proc_info="searching"; + thd->proc_info="Searching rows for update"; while (!(error=info.read_record(&info)) && !thd->killed) { @@ -261,7 +261,7 @@ int mysql_update(THD *thd, ha_rows updated=0L,found=0L; thd->count_cuted_fields=1; /* calc cuted fields */ thd->cuted_fields=0L; - thd->proc_info="updating"; + thd->proc_info="Updating"; query_id=thd->query_id; while (!(error=info.read_record(&info)) && !thd->killed) |