Page MenuHomePhabricator

D21265.diff
No OneTemporary

D21265.diff

diff --git a/src/applications/config/schema/PhabricatorConfigColumnSchema.php b/src/applications/config/schema/PhabricatorConfigColumnSchema.php
--- a/src/applications/config/schema/PhabricatorConfigColumnSchema.php
+++ b/src/applications/config/schema/PhabricatorConfigColumnSchema.php
@@ -68,6 +68,37 @@
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 @@
$issues[] = self::ISSUE_COLLATION;
}
- if ($this->getColumnType() != $expect->getColumnType()) {
+ if (!$this->hasSameColumnTypeAs($expect)) {
$issues[] = self::ISSUE_COLUMNTYPE;
}

File Metadata

Mime Type
text/plain
Expires
Sun, May 12, 4:54 AM (3 w, 5 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6282841
Default Alt Text
D21265.diff (1 KB)

Event Timeline