adding new config parameter for sqlite to specify the journal modetags/v8.0.0alpha1
@@ -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 |
@@ -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); |
@@ -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() { |
@@ -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) { |
@@ -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") { |