Commit 1f1257bd authored by unknown's avatar unknown

A fix (bug #5823: mysql_install_db fails due to incorrect max_allowed_packet).


scripts/fill_help_tables.sh:
  percent_xxx variables added to avoid /0 error.
scripts/mysql_install_db.sh:
  A fix (bug #5823: mysql_install_db fails due to incorrect max_allowed_packet).          
  --net_buffer_length=16K added.
sql/net_serv.cc:
  Typo fixed.
sql/sql_parse.cc:
  A fix (bug #5823: mysql_install_db fails due to incorrect max_allowed_packet).
  Auto extend net buffer in bootstrap mode.
parent 21f2d3aa
...@@ -454,10 +454,12 @@ sub print_verbose_errors ...@@ -454,10 +454,12 @@ sub print_verbose_errors
print STDERR "number of help keywords - ",$count_keywords,"\n"; print STDERR "number of help keywords - ",$count_keywords,"\n";
my $count_without_help= scalar(@without_help); my $count_without_help= scalar(@without_help);
my $percent_without_help= $count_lex ?
int (($count_without_help/$count_lex)*100) :
"100";
print_bad_names(\@without_help,"lexems without help (". print_bad_names(\@without_help,"lexems without help (".
$count_without_help." ~ ". $count_without_help." ~ ".
(int (($count_without_help/$count_lex)*100)). $percent_without_help."%)");
"%)");
print_bad_names(\@description_with_at, print_bad_names(\@description_with_at,
" topics below have symbol \'@\' in their descriptions.\n". " topics below have symbol \'@\' in their descriptions.\n".
"it's probably the litter from 'texi' tags (script needs fixing)"); "it's probably the litter from 'texi' tags (script needs fixing)");
...@@ -467,10 +469,12 @@ sub print_verbose_errors ...@@ -467,10 +469,12 @@ sub print_verbose_errors
print_bad_names(\@without_description,"topics without description"); print_bad_names(\@without_description,"topics without description");
my $count_without_example= scalar(@without_example); my $count_without_example= scalar(@without_example);
my $percent_without_example= $count_topics ?
int (($count_without_example/$count_topics)*100) :
"100";
print_bad_names(\@without_example,"topics without example (". print_bad_names(\@without_example,"topics without example (".
$count_without_example." ~ ". $count_without_example." ~ ".
(int (($count_without_example/$count_topics)*100)). $percent_without_example."%)");
"%)");
} }
print_verbose_errors if ($verbose_option ne 0); print_verbose_errors if ($verbose_option ne 0);
......
...@@ -213,7 +213,7 @@ then ...@@ -213,7 +213,7 @@ then
fi fi
mysqld_install_cmd_line="$mysqld $defaults $mysqld_opt --bootstrap \ mysqld_install_cmd_line="$mysqld $defaults $mysqld_opt --bootstrap \
--skip-grant-tables --basedir=$basedir --datadir=$ldata --skip-innodb \ --skip-grant-tables --basedir=$basedir --datadir=$ldata --skip-innodb \
--skip-bdb --skip-ndbcluster $args --max_allowed_packet=8M" --skip-bdb --skip-ndbcluster $args --max_allowed_packet=8M --net_buffer_length=16K"
if $scriptdir/mysql_create_system_tables $create_option $mdata $hostname $windows \ if $scriptdir/mysql_create_system_tables $create_option $mdata $hostname $windows \
| eval "$mysqld_install_cmd_line" | eval "$mysqld_install_cmd_line"
then then
......
...@@ -165,8 +165,8 @@ my_bool net_realloc(NET *net, ulong length) ...@@ -165,8 +165,8 @@ my_bool net_realloc(NET *net, ulong length)
if (length >= net->max_packet_size) if (length >= net->max_packet_size)
{ {
DBUG_PRINT("error",("Packet too large. Max sixe: %lu", DBUG_PRINT("error", ("Packet too large. Max size: %lu",
net->max_packet_size)); net->max_packet_size));
net->error= 1; net->error= 1;
net->report_error= 1; net->report_error= 1;
net->last_errno= ER_NET_PACKET_TOO_LARGE; net->last_errno= ER_NET_PACKET_TOO_LARGE;
......
...@@ -1102,13 +1102,25 @@ extern "C" pthread_handler_decl(handle_bootstrap,arg) ...@@ -1102,13 +1102,25 @@ extern "C" pthread_handler_decl(handle_bootstrap,arg)
thd->init_for_queries(); thd->init_for_queries();
while (fgets(buff, thd->net.max_packet, file)) while (fgets(buff, thd->net.max_packet, file))
{ {
uint length=(uint) strlen(buff); ulong length= (ulong) strlen(buff);
if (buff[length-1]!='\n' && !feof(file)) while (buff[length-1] != '\n' && !feof(file))
{ {
send_error(thd,ER_NET_PACKET_TOO_LARGE, NullS); /*
thd->fatal_error(); We got only a part of the current string. Will try to increase
break; net buffer then read the rest of the current string.
*/
if (net_realloc(&(thd->net), 2 * thd->net.max_packet))
{
send_error(thd, thd->net.last_errno, NullS);
thd->is_fatal_error= 1;
break;
}
buff= (char*) thd->net.buff;
fgets(buff + length, thd->net.max_packet - length, file);
length+= (ulong) strlen(buff + length);
} }
if (thd->is_fatal_error)
break;
while (length && (my_isspace(thd->charset(), buff[length-1]) || while (length && (my_isspace(thd->charset(), buff[length-1]) ||
buff[length-1] == ';')) buff[length-1] == ';'))
length--; length--;
......
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