summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksander Machniak <alec@alec.pl>2015-02-24 12:23:11 +0100
committerAleksander Machniak <alec@alec.pl>2015-02-24 12:23:11 +0100
commit8f485469c7955fbf5b420ee0b6f043282965715b (patch)
tree20bdfbb29606cae8d8dce8517bdb32b025f298a8
parent62b847bea39b00c4795d10443bf5105d49ff7e07 (diff)
Add possibility to configure max_allowed_packet value for all database engines (#1490283)
-rw-r--r--CHANGELOG1
-rw-r--r--config/defaults.inc.php6
-rw-r--r--program/lib/Roundcube/rcube_db.php2
-rw-r--r--program/lib/Roundcube/rcube_db_mysql.php6
-rw-r--r--program/lib/Roundcube/rcube_db_pgsql.php4
5 files changed, 17 insertions, 2 deletions
diff --git a/CHANGELOG b/CHANGELOG
index ee4a81e7d..064023187 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -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
diff --git a/config/defaults.inc.php b/config/defaults.inc.php
index 06ea9ec21..edc5b32df 100644
--- a/config/defaults.inc.php
+++ b/config/defaults.inc.php
@@ -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
diff --git a/program/lib/Roundcube/rcube_db.php b/program/lib/Roundcube/rcube_db.php
index ab7058f2f..2cacb3013 100644
--- a/program/lib/Roundcube/rcube_db.php
+++ b/program/lib/Roundcube/rcube_db.php
@@ -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);
}
/**
diff --git a/program/lib/Roundcube/rcube_db_mysql.php b/program/lib/Roundcube/rcube_db_mysql.php
index 067e94be6..dd28c25c8 100644
--- a/program/lib/Roundcube/rcube_db_mysql.php
+++ b/program/lib/Roundcube/rcube_db_mysql.php
@@ -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)) {
diff --git a/program/lib/Roundcube/rcube_db_pgsql.php b/program/lib/Roundcube/rcube_db_pgsql.php
index d33cdd859..ff41df224 100644
--- a/program/lib/Roundcube/rcube_db_pgsql.php
+++ b/program/lib/Roundcube/rcube_db_pgsql.php
@@ -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();