Browse Source

Merge pull request #12420 from owncloud/sqlite-wal-2

adding new config parameter for sqlite to specify the journal mode
tags/v8.0.0alpha1
Morris Jobke 9 years ago
parent
commit
e9696a8c9a

+ 6
- 0
config/config.sample.php View File

@@ -133,6 +133,12 @@ $CONFIG = array(
PDO::MYSQL_ATTR_SSL_CA => '/file/path/to/ca_cert.pem',
),

/**
* sqlite3 journal mode can be specified using this config parameter - can be 'WAL' or 'DELETE'
* see for more details https://www.sqlite.org/wal.html
*/
'sqlite.journal_mode' => 'DELETE',

/**
* Indicates whether the ownCloud instance was installed successfully; ``true``
* indicates a successful installation, and ``false`` indicates an unsuccessful

+ 3
- 1
lib/private/db/connectionfactory.php View File

@@ -90,7 +90,8 @@ class ConnectionFactory {
$eventManager->addEventSubscriber(new \Doctrine\DBAL\Event\Listeners\OracleSessionInit);
break;
case 'sqlite3':
$eventManager->addEventSubscriber(new SQLiteSessionInit);
$journalMode = $additionalConnectionParams['sqlite.journal_mode'];
$eventManager->addEventSubscriber(new SQLiteSessionInit(true, $journalMode));
break;
}
$connection = \Doctrine\DBAL\DriverManager::getConnection(
@@ -153,6 +154,7 @@ class ConnectionFactory {
}

$connectionParams['tablePrefix'] = $config->getSystemValue('dbtableprefix', 'oc_');
$connectionParams['sqlite.journal_mode'] = $config->getSystemValue('sqlite.journal_mode', 'WAL');

//additional driver options, eg. for mysql ssl
$driverOptions = $config->getSystemValue('dbdriveroptions', null);

+ 9
- 1
lib/private/db/sqlitesessioninit.php View File

@@ -18,13 +18,20 @@ class SQLiteSessionInit implements EventSubscriber {
*/
private $caseSensitiveLike;

/**
* @var string
*/
private $journalMode;

/**
* Configure case sensitive like for each connection
*
* @param bool $caseSensitiveLike
* @param string $journalMode
*/
public function __construct($caseSensitiveLike = true) {
public function __construct($caseSensitiveLike, $journalMode) {
$this->caseSensitiveLike = $caseSensitiveLike;
$this->journalMode = $journalMode;
}

/**
@@ -34,6 +41,7 @@ class SQLiteSessionInit implements EventSubscriber {
public function postConnect(ConnectionEventArgs $args) {
$sensitive = ($this->caseSensitiveLike) ? 'true' : 'false';
$args->getConnection()->executeUpdate('PRAGMA case_sensitive_like = ' . $sensitive);
$args->getConnection()->executeUpdate('PRAGMA journal_mode = ' . $this->journalMode);
}

public function getSubscribedEvents() {

+ 2
- 2
tests/lib/tempmanager.php View File

@@ -27,7 +27,7 @@ class TempManager extends \Test\TestCase {
protected function setUp() {
parent::setUp();

$this->baseDir = get_temp_dir() . '/oc_tmp_test';
$this->baseDir = get_temp_dir() . $this->getUniqueID('/oc_tmp_test');
if (!is_dir($this->baseDir)) {
mkdir($this->baseDir);
}
@@ -39,7 +39,7 @@ class TempManager extends \Test\TestCase {
}

/**
* @param \Psr\Log\LoggerInterface $logger
* @param \OCP\ILogger $logger
* @return \OC\TempManager
*/
protected function getManager($logger = null) {

+ 16
- 17
tests/preseed-config.php View File

@@ -1,22 +1,21 @@
<?php
$CONFIG = array (
"appstoreenabled" => false,
'apps_paths' =>
array (
0 =>
array (
'path' => OC::$SERVERROOT.'/apps',
'url' => '/apps',
'writable' => true,
),
1 =>
array (
'path' => OC::$SERVERROOT.'/apps2',
'url' => '/apps2',
'writable' => false,
)
),

"appstoreenabled" => false,
'apps_paths' =>
array (
0 =>
array (
'path' => OC::$SERVERROOT.'/apps',
'url' => '/apps',
'writable' => true,
),
1 =>
array (
'path' => OC::$SERVERROOT.'/apps2',
'url' => '/apps2',
'writable' => false,
)
),
);

if(substr(strtolower(PHP_OS), 0, 3) == "win") {

Loading…
Cancel
Save