diff --git a/lib/private/Files/Cache/Cache.php b/lib/private/Files/Cache/Cache.php index 9a6f7d41faa22..56069c88d1413 100644 --- a/lib/private/Files/Cache/Cache.php +++ b/lib/private/Files/Cache/Cache.php @@ -359,18 +359,12 @@ public function update($id, array $data) { } 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 @@ public function update($id, array $data) { $query->set($key, $query->createNamedParameter($value)); } - $query->execute(); + $query->executeStatement(); } }