Merge pull request #24039 from nextcloud/faster-installation
Installation goes brrrr
This commit is contained in:
commit
48f1f961b9
|
@ -124,6 +124,11 @@ class MigrationService {
|
|||
return false;
|
||||
}
|
||||
|
||||
if ($this->connection->tableExists('migrations')) {
|
||||
$this->migrationTableCreated = true;
|
||||
return false;
|
||||
}
|
||||
|
||||
$schema = new SchemaWrapper($this->connection);
|
||||
|
||||
/**
|
||||
|
@ -408,6 +413,11 @@ class MigrationService {
|
|||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function migrate($to = 'latest', $schemaOnly = false) {
|
||||
if ($schemaOnly) {
|
||||
$this->migrateSchemaOnly($to);
|
||||
return;
|
||||
}
|
||||
|
||||
// read known migrations
|
||||
$toBeExecuted = $this->getMigrationsToExecute($to);
|
||||
foreach ($toBeExecuted as $version) {
|
||||
|
@ -415,6 +425,42 @@ class MigrationService {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies all not yet applied versions up to $to
|
||||
*
|
||||
* @param string $to
|
||||
* @throws \InvalidArgumentException
|
||||
*/
|
||||
public function migrateSchemaOnly($to = 'latest') {
|
||||
// read known migrations
|
||||
$toBeExecuted = $this->getMigrationsToExecute($to);
|
||||
|
||||
if (empty($toBeExecuted)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$toSchema = null;
|
||||
foreach ($toBeExecuted as $version) {
|
||||
$instance = $this->createInstance($version);
|
||||
|
||||
$toSchema = $instance->changeSchema($this->output, function () use ($toSchema) {
|
||||
return $toSchema ?: new SchemaWrapper($this->connection);
|
||||
}, ['tablePrefix' => $this->connection->getPrefix()]) ?: $toSchema;
|
||||
|
||||
$this->markAsExecuted($version);
|
||||
}
|
||||
|
||||
if ($toSchema instanceof SchemaWrapper) {
|
||||
$targetSchema = $toSchema->getWrappedSchema();
|
||||
if ($this->checkOracle) {
|
||||
$beforeSchema = $this->connection->createSchema();
|
||||
$this->ensureOracleIdentifierLengthLimit($beforeSchema, $targetSchema, strlen($this->connection->getPrefix()));
|
||||
}
|
||||
$this->connection->migrateToSchema($targetSchema);
|
||||
$toSchema->performDropTableCalls();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the human readable descriptions for the migration steps to run
|
||||
*
|
||||
|
|
|
@ -154,7 +154,7 @@ class Installer {
|
|||
}
|
||||
} else {
|
||||
$ms = new \OC\DB\MigrationService($info['id'], \OC::$server->getDatabaseConnection());
|
||||
$ms->migrate();
|
||||
$ms->migrate('latest', true);
|
||||
}
|
||||
if ($previousVersion) {
|
||||
OC_App::executeRepairSteps($appId, $info['repair-steps']['post-migration']);
|
||||
|
@ -589,7 +589,7 @@ class Installer {
|
|||
}
|
||||
} else {
|
||||
$ms = new \OC\DB\MigrationService($app, \OC::$server->getDatabaseConnection());
|
||||
$ms->migrate();
|
||||
$ms->migrate('latest', true);
|
||||
}
|
||||
|
||||
//run appinfo/install.php
|
||||
|
|
|
@ -150,6 +150,6 @@ abstract class AbstractDatabase {
|
|||
return;
|
||||
}
|
||||
$ms = new MigrationService('core', \OC::$server->getDatabaseConnection());
|
||||
$ms->migrate();
|
||||
$ms->migrate('latest', true);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue