Add possibility to configure max_allowed_packet value for all database engines (#1490283)

pull/229/merge
Aleksander Machniak 10 years ago
parent 62b847bea3
commit 8f485469c7

@ -3,6 +3,7 @@ CHANGELOG Roundcube Webmail
- Plugin API: Add special onload() method to execute plugin actions before startup (session and GUI initialization)
- Add possibility to print contact information (of a single contact)
- Add possibility to configure max_allowed_packet value for all database engines (#1490283)
- Fix refreshing of drafts list when sending a message which was saved in meantime (#1490238)
- Fix saving/sending emoticon images when assets_dir is set
- Fix PHP fatal error when visiting Vacation interface and there's no sieve script yet

@ -51,6 +51,12 @@ $config['db_table_dsn'] = array(
// 'cache_messages' => 'r',
);
// It is possible to specify database variable values e.g. some limits here.
// Use them if your server is not MySQL or for better performance.
// For example Roundcube uses max_allowed_packet value (in bytes)
// which limits query size for database cache operations.
$config['db_max_allowed_packet'] = 23423440;
// ----------------------------------
// LOGGING/DEBUGGING

@ -357,7 +357,7 @@ class rcube_db
public function get_variable($varname, $default = null)
{
// to be implemented by driver class
return $default;
return rcube::get_instance()->config->get('db_' . $varname, $default);
}
/**

@ -167,6 +167,12 @@ class rcube_db_mysql extends rcube_db
return $this->variables[$varname];
}
// configured value has higher prio
$conf_value = rcube::get_instance()->config->get('db_' . $varname);
if ($conf_value !== null) {
return $this->variables[$varname] = $conf_value;
}
$result = $this->query('SHOW VARIABLES LIKE ?', $varname);
while ($row = $this->fetch_array($result)) {

@ -139,9 +139,11 @@ class rcube_db_pgsql extends rcube_db
// There's a known case when max_allowed_packet is queried
// PostgreSQL doesn't have such limit, return immediately
if ($varname == 'max_allowed_packet') {
return $default;
return rcube::get_instance()->config->get('db_' . $varname, $default);
}
$this->variables[$varname] = rcube::get_instance()->config->get('db_' . $varname);
if (!isset($this->variables)) {
$this->variables = array();

Loading…
Cancel
Save