Fix #14951 - Moving Columns with DEFAULT NULL doesn't work on MariaDB 10.2+
Ref: 98a7479174
Signed-off-by: William Desportes <williamdes@wdes.fr>
This commit is contained in:
parent
e9ad2bc153
commit
8aad190ae0
@ -404,6 +404,9 @@ class TableStructureController extends TableController
|
||||
$column_names = array_keys($columns);
|
||||
$changes = array();
|
||||
|
||||
// @see https://mariadb.com/kb/en/library/changes-improvements-in-mariadb-102/#information-schema
|
||||
$usesLiteralNull = $this->dbi->isMariaDB() && $this->dbi->getVersion() >= 100200;
|
||||
$defaultNullValue = $usesLiteralNull ? 'NULL' : null;
|
||||
// move columns from first to last
|
||||
for ($i = 0, $l = count($_POST['move_columns']); $i < $l; $i++) {
|
||||
$column = $_POST['move_columns'][$i];
|
||||
@ -426,7 +429,8 @@ class TableStructureController extends TableController
|
||||
&& ($data['Default'] == 'CURRENT_TIMESTAMP'
|
||||
|| $data['Default'] == 'current_timestamp()');
|
||||
|
||||
if ($data['Null'] === 'YES' && $data['Default'] === null) {
|
||||
// @see https://mariadb.com/kb/en/library/information-schema-columns-table/#examples
|
||||
if ($data['Null'] === 'YES' && in_array($$data['Default'], [$defaultNullValue, null])) {
|
||||
$default_type = 'NULL';
|
||||
} elseif ($current_timestamp) {
|
||||
$default_type = 'CURRENT_TIMESTAMP';
|
||||
@ -454,7 +458,7 @@ class TableStructureController extends TableController
|
||||
$extracted_columnspec['spec_in_brackets'],
|
||||
$extracted_columnspec['attribute'],
|
||||
isset($data['Collation']) ? $data['Collation'] : '',
|
||||
$data['Null'] === 'YES' ? 'NULL' : 'NOT NULL',
|
||||
$data['Null'] === 'YES' ? 'YES' : 'NO',
|
||||
$default_type,
|
||||
$current_timestamp ? '' : $data['Default'],
|
||||
isset($data['Extra']) && $data['Extra'] !== '' ? $data['Extra']
|
||||
|
||||
@ -93,7 +93,7 @@ class CreateAddField
|
||||
: '',
|
||||
isset($_POST['field_null'][$i])
|
||||
? $_POST['field_null'][$i]
|
||||
: 'NOT NULL',
|
||||
: 'NO',
|
||||
$_POST['field_default_type'][$i],
|
||||
$_POST['field_default_value'][$i],
|
||||
isset($_POST['field_extra'][$i])
|
||||
|
||||
Loading…
Reference in New Issue
Block a user