diff options
author | John Molakvoæ <skjnldsv@users.noreply.github.com> | 2022-01-07 08:46:22 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-01-07 08:46:22 +0100 |
commit | 064f2615d74cdbe10f0ff56cb45a11066767991f (patch) | |
tree | c581eafad733f6d504ae01b3e1fb02ae4588c3b3 | |
parent | 191d9b7f473841b063ff48f0e2c327e1adb84630 (diff) | |
parent | a61ac5acf5b55747b5383e72d993510f49fd44fe (diff) | |
download | nextcloud-server-064f2615d74cdbe10f0ff56cb45a11066767991f.tar.gz nextcloud-server-064f2615d74cdbe10f0ff56cb45a11066767991f.zip |
Merge pull request #29325 from nextcloud/backport/28541/stable21
-rw-r--r-- | core/Application.php | 5 | ||||
-rw-r--r-- | core/Command/Db/AddMissingIndices.php | 8 | ||||
-rw-r--r-- | core/Migrations/Version13000Date20170718121200.php | 4 | ||||
-rw-r--r-- | lib/private/DB/SchemaWrapper.php | 13 | ||||
-rw-r--r-- | lib/public/DB/ISchemaWrapper.php | 15 |
5 files changed, 44 insertions, 1 deletions
diff --git a/core/Application.php b/core/Application.php index 77cd221bb83..c127d94622f 100644 --- a/core/Application.php +++ b/core/Application.php @@ -32,6 +32,7 @@ namespace OC\Core; +use Doctrine\DBAL\Platforms\PostgreSQL94Platform; use OC\Authentication\Events\RemoteWipeFinished; use OC\Authentication\Events\RemoteWipeStarted; use OC\Authentication\Listeners\RemoteWipeActivityListener; @@ -115,6 +116,10 @@ class Application extends App { if (!$table->hasIndex('fs_size')) { $subject->addHintForMissingSubject($table->getName(), 'fs_size'); } + + if (!$table->hasIndex('fs_storage_path_prefix') && !$schema->getDatabasePlatform() instanceof PostgreSQL94Platform) { + $subject->addHintForMissingSubject($table->getName(), 'fs_storage_path_prefix'); + } } if ($schema->hasTable('twofactor_providers')) { diff --git a/core/Command/Db/AddMissingIndices.php b/core/Command/Db/AddMissingIndices.php index 824c7073bd3..518b0e638cf 100644 --- a/core/Command/Db/AddMissingIndices.php +++ b/core/Command/Db/AddMissingIndices.php @@ -33,6 +33,7 @@ declare(strict_types=1); namespace OC\Core\Command\Db; +use Doctrine\DBAL\Platforms\PostgreSQL94Platform; use OC\DB\Connection; use OC\DB\SchemaWrapper; use OCP\IDBConnection; @@ -144,6 +145,13 @@ class AddMissingIndices extends Command { $updated = true; $output->writeln('<info>Filecache table updated successfully.</info>'); } + if (!$table->hasIndex('fs_storage_path_prefix') && !$schema->getDatabasePlatform() instanceof PostgreSQL94Platform) { + $output->writeln('<info>Adding additional path index to the filecache table, this can take some time...</info>'); + $table->addIndex(['storage', 'path'], 'fs_storage_path_prefix', [], ['lengths' => [null, 64]]); + $this->connection->migrateToSchema($schema->getWrappedSchema()); + $updated = true; + $output->writeln('<info>Filecache table updated successfully.</info>'); + } } $output->writeln('<info>Check indices of the twofactor_providers table.</info>'); diff --git a/core/Migrations/Version13000Date20170718121200.php b/core/Migrations/Version13000Date20170718121200.php index b020effe5aa..393fe4f6ad6 100644 --- a/core/Migrations/Version13000Date20170718121200.php +++ b/core/Migrations/Version13000Date20170718121200.php @@ -30,6 +30,7 @@ namespace OC\Core\Migrations; +use Doctrine\DBAL\Platforms\PostgreSQL94Platform; use OCP\DB\Types; use OCP\DB\ISchemaWrapper; use OCP\IDBConnection; @@ -262,6 +263,9 @@ class Version13000Date20170718121200 extends SimpleMigrationStep { $table->addIndex(['storage', 'size', 'fileid'], 'fs_storage_size'); $table->addIndex(['mtime'], 'fs_mtime'); $table->addIndex(['size'], 'fs_size'); + if (!$schema->getDatabasePlatform() instanceof PostgreSQL94Platform) { + $table->addIndex(['storage', 'path'], 'fs_storage_path_prefix', [], ['lengths' => [null, 64]]); + } } if (!$schema->hasTable('group_user')) { diff --git a/lib/private/DB/SchemaWrapper.php b/lib/private/DB/SchemaWrapper.php index 20ae5b6faa6..9f7623bac44 100644 --- a/lib/private/DB/SchemaWrapper.php +++ b/lib/private/DB/SchemaWrapper.php @@ -24,6 +24,8 @@ namespace OC\DB; +use Doctrine\DBAL\Exception; +use Doctrine\DBAL\Platforms\AbstractPlatform; use Doctrine\DBAL\Schema\Schema; use OCP\DB\ISchemaWrapper; @@ -130,4 +132,15 @@ class SchemaWrapper implements ISchemaWrapper { public function getTables() { return $this->schema->getTables(); } + + /** + * Gets the DatabasePlatform for the database. + * + * @return AbstractPlatform + * + * @throws Exception + */ + public function getDatabasePlatform() { + return $this->connection->getDatabasePlatform(); + } } diff --git a/lib/public/DB/ISchemaWrapper.php b/lib/public/DB/ISchemaWrapper.php index 3d58a10d2d2..85b09aee10e 100644 --- a/lib/public/DB/ISchemaWrapper.php +++ b/lib/public/DB/ISchemaWrapper.php @@ -23,6 +23,9 @@ namespace OCP\DB; +use Doctrine\DBAL\Exception; +use Doctrine\DBAL\Platforms\AbstractPlatform; + /** * Interface ISchemaWrapper * @@ -82,7 +85,7 @@ interface ISchemaWrapper { * @since 13.0.0 */ public function getTableNames(); - + /** * Gets all table names * @@ -90,4 +93,14 @@ interface ISchemaWrapper { * @since 13.0.0 */ public function getTableNamesWithoutPrefix(); + + /** + * Gets the DatabasePlatform for the database. + * + * @return AbstractPlatform + * + * @throws Exception + * @since 21.0.8 + */ + public function getDatabasePlatform(); } |