diff options
-rw-r--r-- | lib/private/Files/Cache/Cache.php | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/lib/private/Files/Cache/Cache.php b/lib/private/Files/Cache/Cache.php index 9a6f7d41faa..56069c88d14 100644 --- a/lib/private/Files/Cache/Cache.php +++ b/lib/private/Files/Cache/Cache.php @@ -359,18 +359,12 @@ class Cache implements ICache { } if (count($extensionValues)) { - try { - $query = $this->getQueryBuilder(); - $query->insert('filecache_extended'); - $query->hintShardKey('storage', $this->getNumericStorageId()); - - $query->setValue('fileid', $query->createNamedParameter($id, IQueryBuilder::PARAM_INT)); - foreach ($extensionValues as $column => $value) { - $query->setValue($column, $query->createNamedParameter($value)); - } + $insertCount = $this->connection->insertIgnoreConflict( + 'filecache_extended', + array_merge(['fileid' => $id], $extensionValues) + ); - $query->execute(); - } catch (UniqueConstraintViolationException $e) { + if ($insertCount === 0) { $query = $this->getQueryBuilder(); $query->update('filecache_extended') ->whereFileId($id) @@ -386,7 +380,7 @@ class Cache implements ICache { $query->set($key, $query->createNamedParameter($value)); } - $query->execute(); + $query->executeStatement(); } } |