Commit 075a0fbd authored by monty@hundin.mysql.fi's avatar monty@hundin.mysql.fi

Portability fixes

Fixed bug with long log-filenames in Innobase.
parent 6265dfcc
...@@ -4037,7 +4037,7 @@ If you set an @code{ENUM} column to an unsupported value, it will be set to ...@@ -4037,7 +4037,7 @@ If you set an @code{ENUM} column to an unsupported value, it will be set to
the error value 'empty string', with numeric value 0. the error value 'empty string', with numeric value 0.
@item @item
If you set an @cod{SET} column to an unsupported value, the value will If you set an @code{SET} column to an unsupported value, the value will
be ignored. @xref{Bugs}. be ignored. @xref{Bugs}.
@end itemize @end itemize
...@@ -1849,7 +1849,7 @@ log_group_archive( ...@@ -1849,7 +1849,7 @@ log_group_archive(
os_file_t file_handle; os_file_t file_handle;
dulint start_lsn; dulint start_lsn;
dulint end_lsn; dulint end_lsn;
char name[100]; char name[1024];
byte* buf; byte* buf;
ulint len; ulint len;
ibool ret; ibool ret;
......
...@@ -25,7 +25,7 @@ void my_string_ptr_sort(void *base, uint items, size_s size) ...@@ -25,7 +25,7 @@ void my_string_ptr_sort(void *base, uint items, size_s size)
#if INT_MAX > 65536L #if INT_MAX > 65536L
uchar **ptr=0; uchar **ptr=0;
if (size <= 20 && items >= 1000 && if (size <= 20 && items >= 1000 && items < 100000 &&
(ptr= (uchar**) my_malloc(items*sizeof(char*),MYF(0)))) (ptr= (uchar**) my_malloc(items*sizeof(char*),MYF(0))))
{ {
radixsort_for_str_ptr((uchar**) base,items,size,ptr); radixsort_for_str_ptr((uchar**) base,items,size,ptr);
......
...@@ -66,10 +66,12 @@ for i in extra/comp_err extra/replace extra/perror extra/resolveip \ ...@@ -66,10 +66,12 @@ for i in extra/comp_err extra/replace extra/perror extra/resolveip \
myisam/myisampack sql/mysqld sql/mysqlbinlog \ myisam/myisampack sql/mysqld sql/mysqlbinlog \
client/mysql sql/mysqld client/mysqlshow client/mysqlcheck \ client/mysql sql/mysqld client/mysqlshow client/mysqlcheck \
client/mysqladmin client/mysqldump client/mysqlimport client/mysqltest \ client/mysqladmin client/mysqldump client/mysqlimport client/mysqltest \
tools/mysqlmanager \ client/mysqlmanagerc client/mysqlmanager-pwgen tools/mysqlmanager \
client/.libs/mysql client/.libs/mysqlshow client/.libs/mysqladmin \ client/.libs/mysql client/.libs/mysqlshow client/.libs/mysqladmin \
client/.libs/mysqldump client/.libs/mysqlimport client/.libs/mysqltest \ client/.libs/mysqldump client/.libs/mysqlimport client/.libs/mysqltest \
client/.libs/mysqlcheck tools/.libs/mysqlmanager client/.libs/mysqlcheck \
client/.libs/mysqlmanagerc client/libs/mysqlmanager-pwgen \
tools/.libs/mysqlmanager
do do
if [ -f $i ] if [ -f $i ]
then then
......
...@@ -917,13 +917,19 @@ print "Time for update_with_key (" . ($opt_loop_count*3) . "): " . ...@@ -917,13 +917,19 @@ print "Time for update_with_key (" . ($opt_loop_count*3) . "): " .
timestr(timediff($end_time, $loop_time),"all") . "\n"; timestr(timediff($end_time, $loop_time),"all") . "\n";
$loop_time=new Benchmark; $loop_time=new Benchmark;
for ($i=0 ; $i < $opt_loop_count*3 ; $i+=3) $count=0;
for ($i=1 ; $i < $opt_loop_count*3 ; $i+=3)
{ {
$sth = $dbh->do("update bench1 set dummy1='updated' where id=$i") or die $DBI::errstr; $sth = $dbh->do("update bench1 set dummy1='updated' where id=$i") or die $DBI::errstr;
$end_time=new Benchmark;
last if ($estimated=predict_query_time($loop_time,$end_time,\$i,$tests,
$opt_loop_count));
} }
if ($estimated)
$end_time=new Benchmark; { print "Estimated time"; }
print "Time for update_with_key_prefix (" . ($opt_loop_count) . "): " . else
{ print "Time"; }
print " for update_with_key_prefix (" . ($opt_loop_count) . "): " .
timestr(timediff($end_time, $loop_time),"all") . "\n"; timestr(timediff($end_time, $loop_time),"all") . "\n";
print "\nTesting update of all rows\n"; print "\nTesting update of all rows\n";
......
...@@ -526,9 +526,23 @@ innobase_init(void) ...@@ -526,9 +526,23 @@ innobase_init(void)
{ {
int err; int err;
bool ret; bool ret;
char current_lib[2], *default_path;
DBUG_ENTER("innobase_init"); DBUG_ENTER("innobase_init");
/*
When using the embedded server, the datadirectory is not
in the current directory.
*/
if (!mysql_embedded)
default_path=mysql_real_data_home;
else
{
/* It's better to use current lib, to keep path's short */
current_lib[0]=FN_CURLIB;
current_lib[1]=FN_LIBCHAR;
default_path=current_lib;
}
if (specialflag & SPECIAL_NO_PRIOR) { if (specialflag & SPECIAL_NO_PRIOR) {
srv_set_thread_priorities = FALSE; srv_set_thread_priorities = FALSE;
} else { } else {
...@@ -544,10 +558,10 @@ innobase_init(void) ...@@ -544,10 +558,10 @@ innobase_init(void)
MYF(MY_WME)); MYF(MY_WME));
srv_data_home = (innobase_data_home_dir ? innobase_data_home_dir : srv_data_home = (innobase_data_home_dir ? innobase_data_home_dir :
mysql_real_data_home); default_path);
srv_logs_home = (char*) ""; srv_logs_home = (char*) "";
srv_arch_dir = (innobase_log_arch_dir ? innobase_log_arch_dir : srv_arch_dir = (innobase_log_arch_dir ? innobase_log_arch_dir :
mysql_real_data_home); default_path);
ret = innobase_parse_data_file_paths_and_sizes(); ret = innobase_parse_data_file_paths_and_sizes();
...@@ -557,7 +571,7 @@ innobase_init(void) ...@@ -557,7 +571,7 @@ innobase_init(void)
} }
if (!innobase_log_group_home_dir) if (!innobase_log_group_home_dir)
innobase_log_group_home_dir= mysql_real_data_home; innobase_log_group_home_dir= default_path;
ret = innobase_parse_log_group_home_dirs(); ret = innobase_parse_log_group_home_dirs();
if (ret == FALSE) { if (ret == FALSE) {
......
...@@ -1543,10 +1543,11 @@ static struct manager_exec* manager_exec_new(char* arg_start,char* arg_end) ...@@ -1543,10 +1543,11 @@ static struct manager_exec* manager_exec_new(char* arg_start,char* arg_end)
tmp->error="Too few arguments"; tmp->error="Too few arguments";
return tmp; return tmp;
} }
tmp->data_buf=(char*)tmp+sizeof(*tmp); /* We have to allocate 'args' first as this must be alligned */
tmp->args=(char**)(tmp +1);
tmp->data_buf= (char*) (tmp->args + num_args);
memcpy(tmp->data_buf,arg_start,arg_len); memcpy(tmp->data_buf,arg_start,arg_len);
tmp->data_buf_size=arg_len; tmp->data_buf_size=arg_len;
tmp->args=(char**)(tmp->data_buf+arg_len);
tmp->num_args=num_args; tmp->num_args=num_args;
tmp->ident=tmp->data_buf; tmp->ident=tmp->data_buf;
tmp->ident_len=strlen(tmp->ident); tmp->ident_len=strlen(tmp->ident);
......
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