Support AUTO_INCREMENT in bin/storage adjust
Summary: Ref T1191. When changing the column type of an AUTO_INCREMENT column, we currently may lose the autoincrement attribute. Instead, support it. This is a bit messy because AUTO_INCREMENT columns interact with PRIMARY KEY columns (tables may only have one AUTO_INCREMENT column, and it must be a primary key). We need to migrate in more phases to avoid this issue. Introduce new `auto` and `auto64` types to represent autoincrement IDs. Test Plan: - Saw autoincrement show up correctly in web UI. - Fixed an autoincrement issue on the XHProf storage table with `bin/storage adjust` safely. Reviewers: btrahan Reviewed By: btrahan Subscribers: epriestley Maniphest Tasks: T1191 Differential Revision: https://secure.phabricator.com/D10607
This commit is contained in:
@@ -282,6 +282,7 @@ final class PhabricatorConfigDatabaseStatusController
|
||||
$unique_issue = PhabricatorConfigStorageSchema::ISSUE_UNIQUE;
|
||||
$columns_issue = PhabricatorConfigStorageSchema::ISSUE_KEYCOLUMNS;
|
||||
$longkey_issue = PhabricatorConfigStorageSchema::ISSUE_LONGKEY;
|
||||
$auto_issue = PhabricatorConfigStorageSchema::ISSUE_AUTOINCREMENT;
|
||||
|
||||
$database = $comp->getDatabase($database_name);
|
||||
if (!$database) {
|
||||
@@ -339,6 +340,9 @@ final class PhabricatorConfigDatabaseStatusController
|
||||
$this->renderAttr(
|
||||
$this->renderBoolean($column->getNullable()),
|
||||
$column->hasIssue($nullable_issue)),
|
||||
$this->renderAttr(
|
||||
$this->renderBoolean($column->getAutoIncrement()),
|
||||
$column->hasIssue($auto_issue)),
|
||||
$this->renderAttr(
|
||||
$column->getCharacterSet(),
|
||||
$column->hasIssue($charset_issue)),
|
||||
@@ -356,6 +360,7 @@ final class PhabricatorConfigDatabaseStatusController
|
||||
pht('Data Type'),
|
||||
pht('Column Type'),
|
||||
pht('Nullable'),
|
||||
pht('Autoincrement'),
|
||||
pht('Character Set'),
|
||||
pht('Collation'),
|
||||
))
|
||||
@@ -366,6 +371,7 @@ final class PhabricatorConfigDatabaseStatusController
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null
|
||||
));
|
||||
|
||||
@@ -521,11 +527,13 @@ final class PhabricatorConfigDatabaseStatusController
|
||||
$actual_charset = $actual_column->getCharacterSet();
|
||||
$actual_collation = $actual_column->getCollation();
|
||||
$actual_nullable = $actual_column->getNullable();
|
||||
$actual_auto = $actual_column->getAutoIncrement();
|
||||
} else {
|
||||
$actual_coltype = null;
|
||||
$actual_charset = null;
|
||||
$actual_collation = null;
|
||||
$actual_nullable = null;
|
||||
$actual_auto = null;
|
||||
}
|
||||
|
||||
if ($expect_column) {
|
||||
@@ -534,12 +542,14 @@ final class PhabricatorConfigDatabaseStatusController
|
||||
$expect_charset = $expect_column->getCharacterSet();
|
||||
$expect_collation = $expect_column->getCollation();
|
||||
$expect_nullable = $expect_column->getNullable();
|
||||
$expect_auto = $expect_column->getAutoIncrement();
|
||||
} else {
|
||||
$data_type = null;
|
||||
$expect_coltype = null;
|
||||
$expect_charset = null;
|
||||
$expect_collation = null;
|
||||
$expect_nullable = null;
|
||||
$expect_auto = null;
|
||||
}
|
||||
|
||||
|
||||
@@ -587,6 +597,14 @@ final class PhabricatorConfigDatabaseStatusController
|
||||
pht('Expected Nullable'),
|
||||
$this->renderBoolean($expect_nullable),
|
||||
),
|
||||
array(
|
||||
pht('Autoincrement'),
|
||||
$this->renderBoolean($actual_auto),
|
||||
),
|
||||
array(
|
||||
pht('Expected Autoincrement'),
|
||||
$this->renderBoolean($expect_auto),
|
||||
),
|
||||
),
|
||||
$column->getIssues());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user