Commit 1da5382a authored by unknown's avatar unknown

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
......@@ -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;
......
......@@ -28,7 +28,8 @@
%#[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;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment