Do not compare the value on Oracle

As per docs: http://docs.oracle.com/cd/E11882_01/server.112/e26088/conditions002.htm#i1033286
> Large objects (LOBs) are not supported in comparison conditions.
This commit is contained in:
Joas Schilling 2015-09-11 12:11:40 +02:00
parent 211a243784
commit 0e805d5310
1 changed files with 13 additions and 3 deletions

View File

@ -175,11 +175,21 @@ class AppConfig implements IAppConfig {
->set('configvalue', $sql->createParameter('configvalue'))
->where($sql->expr()->eq('appid', $sql->createParameter('app')))
->andWhere($sql->expr()->eq('configkey', $sql->createParameter('configkey')))
->andWhere($sql->expr()->neq('configvalue', $sql->createParameter('configvalue')))
->setParameter('configvalue', $value)
->setParameter('app', $app)
->setParameter('configkey', $key)
->setParameter('configvalue', $value);
->setParameter('configkey', $key);
/*
* Only limit to the existing value for non-Oracle DBs:
* http://docs.oracle.com/cd/E11882_01/server.112/e26088/conditions002.htm#i1033286
* > Large objects (LOBs) are not supported in comparison conditions.
*/
if (!($this->conn instanceof \OC\DB\OracleConnection)) {
// Only update the value when it is not the same
$sql->andWhere($sql->expr()->neq('configvalue', $sql->createParameter('configvalue')))
->setParameter('configvalue', $value);
}
$changedRow = (bool) $sql->execute();
$this->cache[$app][$key] = $value;