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

Fixed bug in auto-increment handling with InnoDB

Some small speedups
parent 2adf2fad
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -46672,6 +46672,8 @@ not yet 100% confident in this code.
@appendixsubsec Changes in release 3.23.42
@itemize @bullet
@item
Fixed bug in @code{InnoDB} and @code{AUTO_INCREMENT} columns.
@item
Applied large patch for OS/2 from Yuri Dario.
@item
Fixed problem with InnoDB when one could get the error @code{Can't
+5 −3
Original line number Diff line number Diff line
@@ -37,7 +37,7 @@
**   Tnu Samuel  <tonu@please.do.not.remove.this.spam.ee>
**/

#define DUMP_VERSION "8.14"
#define DUMP_VERSION "8.15"

#include <global.h>
#include <my_sys.h>
@@ -1224,6 +1224,7 @@ static int dump_all_tables_in_db(char *database)
{
  char *table;
  uint numrows;
  char table_buff[NAME_LEN+3];

  if (init_dumping(database))
    return 1;
@@ -1233,7 +1234,7 @@ static int dump_all_tables_in_db(char *database)
    init_dynamic_string(&query, "LOCK TABLES ", 256, 1024);
    for (numrows=0 ; (table = getTableName(1)) ; numrows++)
    {
      dynstr_append(&query, table);
      dynstr_append(&query, quote_name(table,table_buff));
      dynstr_append(&query, " READ /*!32311 LOCAL */,");
    }
    if (numrows && mysql_real_query(sock, query.str, query.length-1))
@@ -1263,6 +1264,7 @@ static int dump_all_tables_in_db(char *database)
static int dump_selected_tables(char *db, char **table_names, int tables)
{
  uint numrows;
  char table_buff[NAME_LEN+3];

  if (init_dumping(db))
    return 1;
@@ -1274,7 +1276,7 @@ static int dump_selected_tables(char *db, char **table_names, int tables)
    init_dynamic_string(&query, "LOCK TABLES ", 256, 1024);
    for (i=0 ; i < tables ; i++)
    {
      dynstr_append(&query, table_names[i]);
      dynstr_append(&query, quote_name(table_names[i],table_buff));
      dynstr_append(&query, " READ /*!32311 LOCAL */,");
    }
    if (mysql_real_query(sock, query.str, query.length-1))
+20 −12
Original line number Diff line number Diff line
@@ -31,14 +31,16 @@
void caseup_str(my_string str)
{
#ifdef USE_MB
  if (use_mb(default_charset_info))
  {
    register uint32 l;
    register char *end=str+(uint) strlen(str);
  if (use_mb(default_charset_info))
    while (*str)
    {
      if ((l=my_ismbchar(default_charset_info, str,end))) str+=l;
      else *str=toupper(*str),++str;
    }
  }
  else
#endif
    while ((*str = toupper(*str)) != 0)
@@ -50,14 +52,16 @@ void caseup_str(my_string str)
void casedn_str(my_string str)
{
#ifdef USE_MB
  if (use_mb(default_charset_info))
  {
    register uint32 l;
    register char *end=str+(uint) strlen(str);
  if (use_mb(default_charset_info))
    while (*str)
    {
      if ((l=my_ismbchar(default_charset_info, str,end))) str+=l;
      else *str=tolower(*str),++str;
    }
  }
  else
#endif
    while ((*str= tolower(*str)) != 0)
@@ -70,14 +74,16 @@ void casedn_str(my_string str)
void caseup(my_string str, uint length)
{
#ifdef USE_MB
  if (use_mb(default_charset_info))
  {
    register uint32 l;
    register char *end=str+length;
  if (use_mb(default_charset_info))
    while (str<end)
    {
      if ((l=my_ismbchar(default_charset_info, str,end))) str+=l;
      else *str=toupper(*str),++str;
    }
  }
  else
#endif
    for ( ; length>0 ; length--, str++)
@@ -89,14 +95,16 @@ void caseup(my_string str, uint length)
void casedn(my_string str, uint length)
{
#ifdef USE_MB
  if (use_mb(default_charset_info))
  {
    register uint32 l;
    register char *end=str+length;
  if (use_mb(default_charset_info))
    while (str<end)
    {
      if ((l=my_ismbchar(default_charset_info, str,end))) str+=l;
      else *str=tolower(*str),++str;
    }
  }
  else
#endif
    for ( ; length>0 ; length--, str++)
@@ -143,10 +151,10 @@ my_string my_strcasestr(const char *str, const char *search)
int my_strcasecmp(const char *s, const char *t)
{
#ifdef USE_MB
  register uint32 l;
  register const char *end=s+(uint) strlen(s);
  if (use_mb(default_charset_info))
  {
    register uint32 l;
    register const char *end=s+(uint) strlen(s);
    while (s<end)
    {
      if ((l=my_ismbchar(default_charset_info, s,end)))
@@ -172,10 +180,10 @@ int my_strcasecmp(const char *s, const char *t)
int my_casecmp(const char *s, const char *t, uint len)
{
#ifdef USE_MB
  register uint32 l;
  register const char *end=s+len;
  if (use_mb(default_charset_info))
  {
    register uint32 l;
    register const char *end=s+len;
    while (s<end)
    {
      if ((l=my_ismbchar(default_charset_info, s,end)))
+2 −2
Original line number Diff line number Diff line
@@ -562,7 +562,7 @@ if ($limits->{'group_functions'})
    fetch_all_rows($dbh,"select min(id) from bench1");
    fetch_all_rows($dbh,"select max(id) from bench1");
    fetch_all_rows($dbh,"select sum(id+0.0) from bench1");
    fetch_all_rows($dbh,"select min(id3),max(id3),sum(id3 +0.0) from bench1");
    fetch_all_rows($dbh,"select min(id3),max(id3),sum(id3-0.0) from bench1");
    if ($limits->{'group_func_sql_min_str'})
    {
      fetch_all_rows($dbh,"select min(dummy1),max(dummy1) from bench1");
@@ -579,7 +579,7 @@ if ($limits->{'group_functions'})


    $count++;
    $sth=$dbh->prepare($query="select count(*),sum(id+0.0),min(id),max(id),avg(id+0.0) from bench1") or die $DBI::errstr;
    $sth=$dbh->prepare($query="select count(*),sum(id+0.0),min(id),max(id),avg(id-0.0) from bench1") or die $DBI::errstr;
    $sth->execute or die $DBI::errstr;
    @row=$sth->fetchrow_array;
    if ($row[0] != $total_rows ||
+3 −3
Original line number Diff line number Diff line
@@ -136,12 +136,12 @@ if ($limits->{'group_functions'})
  print "Test if the database has a query cache\n";

  # First ensure that the table is read into memory
  fetch_all_rows($dbh,"select sum(idn+$tmp),sum(rev_idn+$tmp) from bench1");
  fetch_all_rows($dbh,"select sum(idn+$tmp),sum(rev_idn-$tmp) from bench1");

  $loop_time=new Benchmark;
  for ($tests=0 ; $tests < $opt_loop_count ; $tests++)
  {
    fetch_all_rows($dbh,"select sum(idn+$tests),sum(rev_idn+$tests) from bench1");
    fetch_all_rows($dbh,"select sum(idn+$tests),sum(rev_idn-$tests) from bench1");
  }
  $end_time=new Benchmark;
  print "Time for select_query_cache ($opt_loop_count): " .
@@ -153,7 +153,7 @@ if ($limits->{'group_functions'})
  $loop_time=new Benchmark;
  for ($tests=0 ; $tests < $opt_loop_count ; $tests++)
  {
    fetch_all_rows($dbh,"select sum(idn+$tests),sum(rev_idn+$tests) from bench1");
    fetch_all_rows($dbh,"select sum(idn+$tests),sum(rev_idn-$tests) from bench1");
  }
  $end_time=new Benchmark;
  print "Time for select_query_cache2 ($opt_loop_count): " .
Loading