mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-22 06:42:42 +01:00
Update MySQL schema inspection code for deprecation of integer display widths
Summary: Fixes T13536. See that task for discussion. Older versions of MySQL (roughly, prior to 8.0.19) emit "int(10)" types. Newer versions emit "int" types. Accept these as equivalent. Test Plan: Ran `bin/storage upgrade --force` against MySQL 8.0.11 and 8.0.20. Got clean adjustment lists on both versions. Maniphest Tasks: T13536 Differential Revision: https://secure.phabricator.com/D21265
This commit is contained in:
parent
7b0db3eb54
commit
f86d822a37
1 changed files with 32 additions and 1 deletions
|
@ -68,6 +68,37 @@ final class PhabricatorConfigColumnSchema
|
|||
return $this->characterSet;
|
||||
}
|
||||
|
||||
public function hasSameColumnTypeAs(PhabricatorConfigColumnSchema $other) {
|
||||
$u_type = $this->getColumnType();
|
||||
$v_type = $other->getColumnType();
|
||||
|
||||
if ($u_type === $v_type) {
|
||||
return true;
|
||||
}
|
||||
|
||||
// See T13536. Display widths for integers were deprecated in MySQL 8.0.17
|
||||
// and removed from some display contexts in or around 8.0.19. Older
|
||||
// MySQL versions will report "int(10)"; newer versions will report "int".
|
||||
// Accept these as equivalent.
|
||||
|
||||
static $map = array(
|
||||
'int(10) unsigned' => 'int unsigned',
|
||||
'int(10)' => 'int',
|
||||
'bigint(20) unsigned' => 'bigint unsigned',
|
||||
'bigint(20)' => 'bigint',
|
||||
);
|
||||
|
||||
if (isset($map[$u_type])) {
|
||||
$u_type = $map[$u_type];
|
||||
}
|
||||
|
||||
if (isset($map[$v_type])) {
|
||||
$v_type = $map[$v_type];
|
||||
}
|
||||
|
||||
return ($u_type === $v_type);
|
||||
}
|
||||
|
||||
public function getKeyByteLength($prefix = null) {
|
||||
$type = $this->getColumnType();
|
||||
|
||||
|
@ -138,7 +169,7 @@ final class PhabricatorConfigColumnSchema
|
|||
$issues[] = self::ISSUE_COLLATION;
|
||||
}
|
||||
|
||||
if ($this->getColumnType() != $expect->getColumnType()) {
|
||||
if (!$this->hasSameColumnTypeAs($expect)) {
|
||||
$issues[] = self::ISSUE_COLUMNTYPE;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue