Commit 1da5382a authored by unknown's avatar unknown
Browse files

BUG# 10687 - MERGE engine fails under Windows

This patch was submitted by Ingo and it appears to work correctly.


sql/ha_myisammrg.cc:
  use FN_LIBCHAR instead of / so buff works correctly on Windows
strings/my_vsnprintf.c:
  add support for %c to my_vsnprintf
parent f4a584f5
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -406,8 +406,8 @@ int ha_myisammrg::create(const char *name, register TABLE *form,
        This means that it might not be possible to move the DATADIR of
        an embedded server without changing the paths in the .MRG file.
      */
      uint length= my_snprintf(buff, FN_REFLEN, "%s/%s/%s", mysql_data_home,
			       tables->db, tables->real_name);
      uint length= my_snprintf(buff, FN_REFLEN, "%s%c%s/%s", mysql_data_home,
			       FN_LIBCHAR, tables->db, tables->real_name);
      /*
        If a MyISAM table is in the same directory as the MERGE table,
        we use the table name without a path. This means that the
@@ -422,6 +422,7 @@ int ha_myisammrg::create(const char *name, register TABLE *form,
    }
    else
      table_name=(*tbl)->path;
    DBUG_PRINT("info",("MyISAM table_name: '%s'", table_name));
    *pos++= table_name;
  }
  *pos=0;
+7 −1
Original line number Diff line number Diff line
@@ -28,6 +28,7 @@
    %#[l]u
    %#[l]x
    %#.#s	Note first # is ignored
    %c
    
  RETURN
    length of result string
@@ -120,6 +121,11 @@ int my_vsnprintf(char *to, size_t n, const char* fmt, va_list ap)
      to+= res_length;
      continue;
    }
    else if (*fmt == 'c')
    {
      *(to++)= (char) va_arg(ap, int);
      continue;
    }
    /* We come here on '%%', unknown code or too long parameter */
    if (to == end)
      break;