From f5afeb3841a89bd58cfd12832ab05bf7eae75439 Mon Sep 17 00:00:00 2001 From: "mkanat%bugzilla.org" <> Date: Tue, 28 Oct 2008 05:59:00 +0000 Subject: Bug 141951: Set the max_packet_size for attachments (and bugs_fulltext) when connecting to MySQL Patch By Max Kanat-Alexander r=LpSolit, a=mkanat --- Bugzilla/DB/Mysql.pm | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'Bugzilla/DB') diff --git a/Bugzilla/DB/Mysql.pm b/Bugzilla/DB/Mysql.pm index 2f42f9f34..601be102b 100644 --- a/Bugzilla/DB/Mysql.pm +++ b/Bugzilla/DB/Mysql.pm @@ -51,6 +51,11 @@ use Bugzilla::DB::Schema::Mysql; use List::Util qw(max); use Text::ParseWords; +# This is how many comments of MAX_COMMENT_LENGTH we expect on a single bug. +# In reality, you could have a LOT more comments than this, because +# MAX_COMMENT_LENGTH is big. +use constant MAX_COMMENTS => 50; + # This module extends the DB interface via inheritance use base qw(Bugzilla::DB); @@ -93,6 +98,19 @@ sub new { } } + # The "comments" field of the bugs_fulltext table could easily exceed + # MySQL's default max_allowed_packet. Also, MySQL should never have + # a max_allowed_packet smaller than our max_attachment_size. However, + # if we've already set a max_allowed_packet in MySQL bigger than all + # of those, we should keep it. + my (undef, $current_max_allowed) = $self->selectrow_array( + q{SHOW VARIABLES LIKE 'max\_allowed\_packet'}); + my $min_max_allowed_packet = MAX_COMMENTS * MAX_COMMENT_LENGTH; + my $max_allowed_packet = max($min_max_allowed_packet, + $current_max_allowed, + Bugzilla->params->{'maxattachmentsize'}); + $self->do("SET SESSION max_allowed_packet = $max_allowed_packet"); + return $self; } -- cgit v1.2.3-24-g4f1b