Commit 70e3e0db authored by Frédéric Buclin's avatar Frédéric Buclin

Bug 701350: Oracle crashes if the 'maxattachmentsize' parameter is set to a too small value

r/a=mkanat
parent 77f14b25
...@@ -40,6 +40,8 @@ use base qw(Bugzilla::DB); ...@@ -40,6 +40,8 @@ use base qw(Bugzilla::DB);
use DBD::Oracle; use DBD::Oracle;
use DBD::Oracle qw(:ora_types); use DBD::Oracle qw(:ora_types);
use List::Util qw(max);
use Bugzilla::Constants; use Bugzilla::Constants;
use Bugzilla::Error; use Bugzilla::Error;
use Bugzilla::Util; use Bugzilla::Util;
...@@ -50,6 +52,8 @@ use Bugzilla::Util; ...@@ -50,6 +52,8 @@ use Bugzilla::Util;
use constant EMPTY_STRING => '__BZ_EMPTY_STR__'; use constant EMPTY_STRING => '__BZ_EMPTY_STR__';
use constant ISOLATION_LEVEL => 'READ COMMITTED'; use constant ISOLATION_LEVEL => 'READ COMMITTED';
use constant BLOB_TYPE => { ora_type => ORA_BLOB }; use constant BLOB_TYPE => { ora_type => ORA_BLOB };
# The max size allowed for LOB fields, in kilobytes.
use constant MIN_LONG_READ_LEN => 32 * 1024;
use constant FULLTEXT_OR => ' OR '; use constant FULLTEXT_OR => ' OR ';
sub new { sub new {
...@@ -68,8 +72,8 @@ sub new { ...@@ -68,8 +72,8 @@ sub new {
my $dsn = "dbi:Oracle:host=$host;sid=$dbname"; my $dsn = "dbi:Oracle:host=$host;sid=$dbname";
$dsn .= ";port=$port" if $port; $dsn .= ";port=$port" if $port;
my $attrs = { FetchHashKeyName => 'NAME_lc', my $attrs = { FetchHashKeyName => 'NAME_lc',
LongReadLen => ( Bugzilla->params->{'maxattachmentsize'} LongReadLen => max(Bugzilla->params->{'maxattachmentsize'},
|| 1000 ) * 1024, MIN_LONG_READ_LEN) * 1024,
}; };
my $self = $class->db_new({ dsn => $dsn, user => $user, my $self = $class->db_new({ dsn => $dsn, user => $user,
pass => $pass, attrs => $attrs }); pass => $pass, attrs => $attrs });
......
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