Issue #2990118 by amateescu: Optimize 'initial' and 'initial_from_field' handling in MySQL and PostgreSQL
parent
27bc1f74cb
commit
bc328489db
|
@ -438,11 +438,6 @@ class Schema extends DatabaseSchema {
|
|||
$query .= ', ADD ' . implode(', ADD ', $keys_sql);
|
||||
}
|
||||
$this->connection->query($query);
|
||||
if (isset($spec['initial'])) {
|
||||
$this->connection->update($table)
|
||||
->fields([$field => $spec['initial']])
|
||||
->execute();
|
||||
}
|
||||
if (isset($spec['initial_from_field'])) {
|
||||
if (isset($spec['initial'])) {
|
||||
$expression = 'COALESCE(' . $spec['initial_from_field'] . ', :default_initial_value)';
|
||||
|
@ -456,6 +451,11 @@ class Schema extends DatabaseSchema {
|
|||
->expression($field, $expression, $arguments)
|
||||
->execute();
|
||||
}
|
||||
elseif (isset($spec['initial'])) {
|
||||
$this->connection->update($table)
|
||||
->fields([$field => $spec['initial']])
|
||||
->execute();
|
||||
}
|
||||
if ($fixnull) {
|
||||
$spec['not null'] = TRUE;
|
||||
$this->changeField($table, $field, $field, $spec);
|
||||
|
|
|
@ -565,11 +565,6 @@ EOD;
|
|||
$query = 'ALTER TABLE {' . $table . '} ADD COLUMN ';
|
||||
$query .= $this->createFieldSql($field, $this->processField($spec));
|
||||
$this->connection->query($query);
|
||||
if (isset($spec['initial'])) {
|
||||
$this->connection->update($table)
|
||||
->fields([$field => $spec['initial']])
|
||||
->execute();
|
||||
}
|
||||
if (isset($spec['initial_from_field'])) {
|
||||
if (isset($spec['initial'])) {
|
||||
$expression = 'COALESCE(' . $spec['initial_from_field'] . ', :default_initial_value)';
|
||||
|
@ -583,6 +578,11 @@ EOD;
|
|||
->expression($field, $expression, $arguments)
|
||||
->execute();
|
||||
}
|
||||
elseif (isset($spec['initial'])) {
|
||||
$this->connection->update($table)
|
||||
->fields([$field => $spec['initial']])
|
||||
->execute();
|
||||
}
|
||||
if ($fixnull) {
|
||||
$this->connection->query("ALTER TABLE {" . $table . "} ALTER $field SET NOT NULL");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue