summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Molakvoæ <skjnldsv@users.noreply.github.com>2022-01-07 08:46:22 +0100
committerGitHub <noreply@github.com>2022-01-07 08:46:22 +0100
commit064f2615d74cdbe10f0ff56cb45a11066767991f (patch)
treec581eafad733f6d504ae01b3e1fb02ae4588c3b3
parent191d9b7f473841b063ff48f0e2c327e1adb84630 (diff)
parenta61ac5acf5b55747b5383e72d993510f49fd44fe (diff)
downloadnextcloud-server-064f2615d74cdbe10f0ff56cb45a11066767991f.tar.gz
nextcloud-server-064f2615d74cdbe10f0ff56cb45a11066767991f.zip
Merge pull request #29325 from nextcloud/backport/28541/stable21
-rw-r--r--core/Application.php5
-rw-r--r--core/Command/Db/AddMissingIndices.php8
-rw-r--r--core/Migrations/Version13000Date20170718121200.php4
-rw-r--r--lib/private/DB/SchemaWrapper.php13
-rw-r--r--lib/public/DB/ISchemaWrapper.php15
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();
}