fix: misc code fixes around db sharding

Signed-off-by: Robin Appelman <robin@icewind.nl>
pull/47852/head
Robin Appelman 2 years ago
parent 0f732199d2
commit da59fd4389
No known key found for this signature in database
GPG Key ID: 42B69D8A64526EFB
  1. 4
      lib/private/DB/QueryBuilder/ExtendedQueryBuilder.php
  2. 6
      lib/private/DB/QueryBuilder/QueryBuilder.php
  3. 4
      lib/private/DB/QueryBuilder/Sharded/ShardedQueryBuilder.php
  4. 2
      lib/private/Files/Cache/Cache.php
  5. 5
      lib/private/Memcache/Factory.php
  6. 1
      lib/private/Preview/BackgroundCleanupJob.php
  7. 4
      lib/public/DB/QueryBuilder/IQueryBuilder.php
  8. 14
      tests/lib/DB/QueryBuilder/Partitioned/PartitionedQueryBuilderTest.php
  9. 14
      tests/lib/DB/QueryBuilder/Sharded/SharedQueryBuilderTest.php

@ -289,12 +289,12 @@ abstract class ExtendedQueryBuilder implements IQueryBuilder {
return $this->builder->executeStatement($connection);
}
public function hintShardKey(string $column, mixed $value, bool $overwrite = false) {
public function hintShardKey(string $column, mixed $value, bool $overwrite = false): self {
$this->builder->hintShardKey($column, $value, $overwrite);
return $this;
}
public function runAcrossAllShards() {
public function runAcrossAllShards(): self {
$this->builder->runAcrossAllShards();
return $this;
}

@ -560,7 +560,7 @@ class QueryBuilder implements IQueryBuilder {
return $this;
}
private function addOutputColumns(array $columns) {
private function addOutputColumns(array $columns): void {
foreach ($columns as $column) {
if (is_array($column)) {
$this->addOutputColumns($column);
@ -1370,11 +1370,11 @@ class QueryBuilder implements IQueryBuilder {
return $this->connection->escapeLikeParameter($parameter);
}
public function hintShardKey(string $column, mixed $value, bool $overwrite = false) {
public function hintShardKey(string $column, mixed $value, bool $overwrite = false): self {
return $this;
}
public function runAcrossAllShards() {
public function runAcrossAllShards(): self {
// noop
return $this;
}

@ -296,7 +296,7 @@ class ShardedQueryBuilder extends ExtendedQueryBuilder {
];
}
public function hintShardKey(string $column, mixed $value, bool $overwrite = false) {
public function hintShardKey(string $column, mixed $value, bool $overwrite = false): self {
if ($overwrite) {
$this->primaryKeys = [];
$this->shardKeys = [];
@ -310,7 +310,7 @@ class ShardedQueryBuilder extends ExtendedQueryBuilder {
return $this;
}
public function runAcrossAllShards() {
public function runAcrossAllShards(): self {
$this->allShards = true;
return $this;
}

@ -1207,7 +1207,7 @@ class Cache implements ICache {
}
}
private function moveFromStorageSharded(ShardDefinition $shardDefinition, ICache $sourceCache, ICacheEntry $sourceEntry, $targetPath) {
private function moveFromStorageSharded(ShardDefinition $shardDefinition, ICache $sourceCache, ICacheEntry $sourceEntry, $targetPath): void {
if ($sourceEntry->getMimeType() === ICacheEntry::DIRECTORY_MIMETYPE) {
$fileIds = $this->getChildIds($sourceCache->getNumericStorageId(), $sourceEntry->getPath());
} else {

@ -6,6 +6,7 @@
*/
namespace OC\Memcache;
use Closure;
use OCP\Cache\CappedMemoryCache;
use OCP\ICache;
use OCP\ICacheFactory;
@ -40,7 +41,7 @@ class Factory implements ICacheFactory {
private IProfiler $profiler;
/**
* @param callable $globalPrefixClosure
* @param Closure $globalPrefixClosure
* @param LoggerInterface $logger
* @param ?class-string<ICache> $localCacheClass
* @param ?class-string<ICache> $distributedCacheClass
@ -48,7 +49,7 @@ class Factory implements ICacheFactory {
* @param string $logFile
*/
public function __construct(
private $globalPrefixClosure,
private Closure $globalPrefixClosure,
LoggerInterface $logger,
IProfiler $profiler,
?string $localCacheClass = null,

@ -16,7 +16,6 @@ use OCP\Files\IMimeTypeLoader;
use OCP\Files\NotFoundException;
use OCP\Files\NotPermittedException;
use OCP\IDBConnection;
use function Symfony\Component\Translation\t;
class BackgroundCleanupJob extends TimedJob {
/** @var IDBConnection */

@ -1036,7 +1036,7 @@ interface IQueryBuilder {
* @return $this
* @since 30.0.0
*/
public function hintShardKey(string $column, mixed $value, bool $overwrite = false);
public function hintShardKey(string $column, mixed $value, bool $overwrite = false): self;
/**
* Set the query to run across all shards if sharding is enabled.
@ -1044,7 +1044,7 @@ interface IQueryBuilder {
* @return $this
* @since 30.0.0
*/
public function runAcrossAllShards();
public function runAcrossAllShards(): self;
/**
* Get a list of column names that are expected in the query output

@ -51,7 +51,7 @@ class PartitionedQueryBuilderTest extends TestCase {
}
}
private function setupFileCache() {
private function setupFileCache(): void {
$this->cleanupDb();
$query = $this->getQueryBuilder();
$query->insert('storages')
@ -92,7 +92,7 @@ class PartitionedQueryBuilderTest extends TestCase {
$query->executeStatement();
}
private function cleanupDb() {
private function cleanupDb(): void {
$query = $this->getQueryBuilder();
$query->delete('storages')
->where($query->expr()->gt('numeric_id', $query->createNamedParameter(1000000, IQueryBuilder::PARAM_INT)));
@ -115,7 +115,7 @@ class PartitionedQueryBuilderTest extends TestCase {
$query->executeStatement();
}
public function testSimpleOnlyPartitionQuery() {
public function testSimpleOnlyPartitionQuery(): void {
$builder = $this->getQueryBuilder();
$builder->addPartition(new PartitionSplit('filecache', ['filecache']));
@ -129,7 +129,7 @@ class PartitionedQueryBuilderTest extends TestCase {
$this->assertEquals($results[0]['path'], 'file1');
}
public function testSimplePartitionedQuery() {
public function testSimplePartitionedQuery(): void {
$builder = $this->getQueryBuilder();
$builder->addPartition(new PartitionSplit('filecache', ['filecache']));
@ -151,7 +151,7 @@ class PartitionedQueryBuilderTest extends TestCase {
$this->assertEquals($results[0]['path'], 'file1');
}
public function testMultiTablePartitionedQuery() {
public function testMultiTablePartitionedQuery(): void {
$builder = $this->getQueryBuilder();
$builder->addPartition(new PartitionSplit('filecache', ['filecache', 'filecache_extended']));
@ -174,7 +174,7 @@ class PartitionedQueryBuilderTest extends TestCase {
$this->assertEquals($results[0]['upload_time'], 1234);
}
public function testPartitionedQueryFromSplit() {
public function testPartitionedQueryFromSplit(): void {
$builder = $this->getQueryBuilder();
$builder->addPartition(new PartitionSplit('filecache', ['filecache']));
@ -195,7 +195,7 @@ class PartitionedQueryBuilderTest extends TestCase {
$this->assertEquals($results[0]['path'], 'file1');
}
public function testMultiJoinPartitionedQuery() {
public function testMultiJoinPartitionedQuery(): void {
$builder = $this->getQueryBuilder();
$builder->addPartition(new PartitionSplit('filecache', ['filecache']));

@ -46,7 +46,7 @@ class SharedQueryBuilderTest extends TestCase {
);
}
public function testGetShardKeySingleParam() {
public function testGetShardKeySingleParam(): void {
$query = $this->getQueryBuilder('filecache', 'storage', 'fileid');
$query->select('fileid', 'path')
->from('filecache')
@ -56,7 +56,7 @@ class SharedQueryBuilderTest extends TestCase {
$this->assertEquals([10], $query->getShardKeys());
}
public function testGetPrimaryKeyParam() {
public function testGetPrimaryKeyParam(): void {
$query = $this->getQueryBuilder('filecache', 'storage', 'fileid');
$query->select('fileid', 'path')
->from('filecache')
@ -66,7 +66,7 @@ class SharedQueryBuilderTest extends TestCase {
$this->assertEquals([], $query->getShardKeys());
}
public function testValidateWithShardKey() {
public function testValidateWithShardKey(): void {
$query = $this->getQueryBuilder('filecache', 'storage', 'fileid');
$query->select('fileid', 'path')
->from('filecache')
@ -76,7 +76,7 @@ class SharedQueryBuilderTest extends TestCase {
$this->assertTrue(true);
}
public function testValidateWithPrimaryKey() {
public function testValidateWithPrimaryKey(): void {
$query = $this->getQueryBuilder('filecache', 'storage', 'fileid');
$query->select('fileid', 'path')
->from('filecache')
@ -86,7 +86,7 @@ class SharedQueryBuilderTest extends TestCase {
$this->assertTrue(true);
}
public function testValidateWithNoKey() {
public function testValidateWithNoKey(): void {
$query = $this->getQueryBuilder('filecache', 'storage', 'fileid');
$query->select('fileid', 'path')
->from('filecache')
@ -97,7 +97,7 @@ class SharedQueryBuilderTest extends TestCase {
$this->fail('exception expected');
}
public function testValidateNonSharedTable() {
public function testValidateNonSharedTable(): void {
$query = $this->getQueryBuilder('filecache', 'storage', 'fileid');
$query->select('configvalue')
->from('appconfig')
@ -107,7 +107,7 @@ class SharedQueryBuilderTest extends TestCase {
$this->assertTrue(true);
}
public function testGetShardKeyMultipleSingleParam() {
public function testGetShardKeyMultipleSingleParam(): void {
$query = $this->getQueryBuilder('filecache', 'storage', 'fileid');
$query->select('fileid', 'path')
->from('filecache')

Loading…
Cancel
Save