mirror of
https://github.com/moodle/moodle.git
synced 2025-01-19 14:27:22 +01:00
Avoid some double updates under PG
This commit is contained in:
parent
1f0c7fae15
commit
51517ddc6d
@ -171,25 +171,36 @@ class XMLDBpostgres7 extends XMLDBgenerator {
|
||||
|
||||
$defaultvalue = null;
|
||||
|
||||
/// Save old flags
|
||||
$old_skip_default = $this->alter_column_skip_default;
|
||||
$old_skip_notnull = $this->alter_column_skip_notnull;
|
||||
|
||||
/// Prevent default clause and launch parent getAddField()
|
||||
$this->alter_column_skip_default = true;
|
||||
$this->alter_column_skip_notnull = true;
|
||||
$results = parent::getAddFieldSQL($xmldb_table, $xmldb_field);
|
||||
|
||||
/// Add default
|
||||
if ($defaultclause = $this->getDefaultClause($xmldb_field)) {
|
||||
$defaultvalue = $this->getDefaultValue($xmldb_field);
|
||||
$results[] = 'ALTER TABLE ' . $tablename . ' ALTER COLUMN ' . $fieldname . ' SET' . $defaultclause; /// Add default clause
|
||||
/// Re-set old flags
|
||||
$this->alter_column_skip_default = $old_skip_default;
|
||||
$this->alter_column_skip_notnull = $old_skip_notnull;
|
||||
|
||||
/// Add default (only if not skip_default)
|
||||
if (!$this->alter_column_skip_default) {
|
||||
if ($defaultclause = $this->getDefaultClause($xmldb_field)) {
|
||||
$defaultvalue = $this->getDefaultValue($xmldb_field);
|
||||
$results[] = 'ALTER TABLE ' . $tablename . ' ALTER COLUMN ' . $fieldname . ' SET' . $defaultclause; /// Add default clause
|
||||
}
|
||||
/// Update default value (if exists) to all the records
|
||||
if ($defaultvalue !== null) {
|
||||
$results[] = 'UPDATE ' . $tablename . ' SET ' . $fieldname . '=' . $defaultvalue;
|
||||
}
|
||||
}
|
||||
|
||||
/// Update default value (if exists) to all the records
|
||||
if ($defaultvalue !== null) {
|
||||
$results[] = 'UPDATE ' . $tablename . ' SET ' . $fieldname . '=' . $defaultvalue;
|
||||
}
|
||||
|
||||
/// Add not null
|
||||
if ($xmldb_field->getNotnull()) {
|
||||
$results[] = 'ALTER TABLE ' . $tablename . ' ALTER COLUMN ' . $fieldname . ' SET NOT NULL'; /// Add not null
|
||||
/// Add not null (only if no skip_notnull)
|
||||
if (!$this->alter_column_skip_notnull) {
|
||||
if ($xmldb_field->getNotnull()) {
|
||||
$results[] = 'ALTER TABLE ' . $tablename . ' ALTER COLUMN ' . $fieldname . ' SET NOT NULL'; /// Add not null
|
||||
}
|
||||
}
|
||||
|
||||
return $results;
|
||||
|
Loading…
x
Reference in New Issue
Block a user