Commit ce7a0a02 authored by monty@hundin.mysql.fi's avatar monty@hundin.mysql.fi
Browse files

Fix not critical MyISAM bug in locking.

Free character sets properly (for embedded).
Add missing mutex in HANDLER CLOSE
parent 7c3f8447
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -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
+6 −1
Original line number Diff line number Diff line
@@ -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
+3 −4
Original line number Diff line number Diff line
@@ -305,7 +305,6 @@ 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);
+1 −1
Original line number Diff line number Diff line
@@ -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" {
+1 −1
Original line number Diff line number Diff line
@@ -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)
Loading