From d15fb20fe6a9108f36970194b2f4b54803bde3f5 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 11 Sep 2017 08:08:19 -0700 Subject: [PATCH 01/17] Support storage of Differential hunk data in Files Summary: Ref T12932. For long-lived installs, one of the largest tables tends to be the hunk data table. Although it doesn't grow tremendously fast, it's also well suited to storage in Files instead of the database (infrequent access, relatively large blobs of data, mostly one-at-a-time access), and earlier work anticipated eventually adding support for Files storage. Make Files storage work, and provide `bin/differential migrate-hunk` to manually test/migrate hunks. This is currently the only way hunks get moved to file storage, but I expect to add a GC step which moves them to File storage after 30 days shortly. The immediate motivation for this is to relieve storage pressure on db001/db002 so we have more headroom for deploying the Ferret engine and its larger indexes (see also T12819). Test Plan: - Used `bin/differential migrate-hunk` to move a hunk to and from file storage, verified it survived intact. - Downloaded the actual stored file, sanity-checked it. Verified permissions. - Destroyed a diff with `bin/remove destroy`, saw the hunk and file storage destroyed. - Verified that going from file -> text destroys the old file properly with `migrate-hunk --trace ...`. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12932 Differential Revision: https://secure.phabricator.com/D18584 --- src/__phutil_library_map__.php | 4 + ...ricatorDifferentialMigrateHunkWorkflow.php | 86 ++++++++++++ .../storage/DifferentialChangeset.php | 28 +++- .../differential/storage/DifferentialDiff.php | 2 +- .../differential/storage/DifferentialHunk.php | 17 ++- .../storage/DifferentialModernHunk.php | 125 ++++++++++++++++++ 6 files changed, 257 insertions(+), 5 deletions(-) create mode 100644 src/applications/differential/management/PhabricatorDifferentialMigrateHunkWorkflow.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 83714d4e13..925dfc66c6 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -2667,6 +2667,7 @@ phutil_register_library_map(array( 'PhabricatorDifferentialConfigOptions' => 'applications/differential/config/PhabricatorDifferentialConfigOptions.php', 'PhabricatorDifferentialExtractWorkflow' => 'applications/differential/management/PhabricatorDifferentialExtractWorkflow.php', 'PhabricatorDifferentialManagementWorkflow' => 'applications/differential/management/PhabricatorDifferentialManagementWorkflow.php', + 'PhabricatorDifferentialMigrateHunkWorkflow' => 'applications/differential/management/PhabricatorDifferentialMigrateHunkWorkflow.php', 'PhabricatorDifferentialRevisionTestDataGenerator' => 'applications/differential/lipsum/PhabricatorDifferentialRevisionTestDataGenerator.php', 'PhabricatorDiffusionApplication' => 'applications/diffusion/application/PhabricatorDiffusionApplication.php', 'PhabricatorDiffusionBlameSetting' => 'applications/settings/setting/PhabricatorDiffusionBlameSetting.php', @@ -5367,6 +5368,7 @@ phutil_register_library_map(array( 'DifferentialChangeset' => array( 'DifferentialDAO', 'PhabricatorPolicyInterface', + 'PhabricatorDestructibleInterface', ), 'DifferentialChangesetDetailView' => 'AphrontView', 'DifferentialChangesetFileTreeSideNavBuilder' => 'Phobject', @@ -5461,6 +5463,7 @@ phutil_register_library_map(array( 'DifferentialHunk' => array( 'DifferentialDAO', 'PhabricatorPolicyInterface', + 'PhabricatorDestructibleInterface', ), 'DifferentialHunkParser' => 'Phobject', 'DifferentialHunkParserTestCase' => 'PhabricatorTestCase', @@ -7999,6 +8002,7 @@ phutil_register_library_map(array( 'PhabricatorDifferentialConfigOptions' => 'PhabricatorApplicationConfigOptions', 'PhabricatorDifferentialExtractWorkflow' => 'PhabricatorDifferentialManagementWorkflow', 'PhabricatorDifferentialManagementWorkflow' => 'PhabricatorManagementWorkflow', + 'PhabricatorDifferentialMigrateHunkWorkflow' => 'PhabricatorDifferentialManagementWorkflow', 'PhabricatorDifferentialRevisionTestDataGenerator' => 'PhabricatorTestDataGenerator', 'PhabricatorDiffusionApplication' => 'PhabricatorApplication', 'PhabricatorDiffusionBlameSetting' => 'PhabricatorInternalSetting', diff --git a/src/applications/differential/management/PhabricatorDifferentialMigrateHunkWorkflow.php b/src/applications/differential/management/PhabricatorDifferentialMigrateHunkWorkflow.php new file mode 100644 index 0000000000..9c0e0071e4 --- /dev/null +++ b/src/applications/differential/management/PhabricatorDifferentialMigrateHunkWorkflow.php @@ -0,0 +1,86 @@ +setName('migrate-hunk') + ->setExamples('**migrate-hunk** --id __hunk__ --to __storage__') + ->setSynopsis(pht('Migrate storage engines for a hunk.')) + ->setArguments( + array( + array( + 'name' => 'id', + 'param' => 'id', + 'help' => pht('Hunk ID to migrate.'), + ), + array( + 'name' => 'to', + 'param' => 'storage', + 'help' => pht('Storage engine to migrate to.'), + ), + )); + } + + public function execute(PhutilArgumentParser $args) { + $id = $args->getArg('id'); + if (!$id) { + throw new PhutilArgumentUsageException( + pht('Specify a hunk to migrate with --id.')); + } + + $storage = $args->getArg('to'); + switch ($storage) { + case DifferentialModernHunk::DATATYPE_TEXT: + case DifferentialModernHunk::DATATYPE_FILE: + break; + default: + throw new PhutilArgumentUsageException( + pht('Specify a hunk storage engine with --to.')); + } + + $hunk = $this->loadHunk($id); + $old_data = $hunk->getChanges(); + + switch ($storage) { + case DifferentialModernHunk::DATATYPE_TEXT: + $hunk->saveAsText(); + $this->logOkay( + pht('TEXT'), + pht('Convereted hunk to text storage.')); + break; + case DifferentialModernHunk::DATATYPE_FILE: + $hunk->saveAsFile(); + $this->logOkay( + pht('FILE'), + pht('Convereted hunk to file storage.')); + break; + } + + $hunk = $this->loadHunk($id); + $new_data = $hunk->getChanges(); + + if ($old_data !== $new_data) { + throw new Exception( + pht( + 'Integrity check failed: new file data differs fom old data!')); + } + + return 0; + } + + private function loadHunk($id) { + $hunk = id(new DifferentialModernHunk())->load($id); + if (!$hunk) { + throw new PhutilArgumentUsageException( + pht( + 'No hunk exists with ID "%s".', + $id)); + } + + return $hunk; + } + + +} diff --git a/src/applications/differential/storage/DifferentialChangeset.php b/src/applications/differential/storage/DifferentialChangeset.php index 9c718a8765..3656fe6507 100644 --- a/src/applications/differential/storage/DifferentialChangeset.php +++ b/src/applications/differential/storage/DifferentialChangeset.php @@ -1,7 +1,10 @@ getDiff()->hasAutomaticCapability($capability, $viewer); } + +/* -( PhabricatorDestructibleInterface )----------------------------------- */ + + + public function destroyObjectPermanently( + PhabricatorDestructionEngine $engine) { + $this->openTransaction(); + + $hunks = id(new DifferentialModernHunk())->loadAllWhere( + 'changesetID = %d', + $this->getID()); + foreach ($hunks as $hunk) { + $engine->destroyObject($hunk); + } + + $this->delete(); + + $this->saveTransaction(); + } + + } diff --git a/src/applications/differential/storage/DifferentialDiff.php b/src/applications/differential/storage/DifferentialDiff.php index 8976fdd8f0..f7e85cd835 100644 --- a/src/applications/differential/storage/DifferentialDiff.php +++ b/src/applications/differential/storage/DifferentialDiff.php @@ -727,7 +727,7 @@ final class DifferentialDiff $this->delete(); foreach ($this->loadChangesets() as $changeset) { - $changeset->delete(); + $engine->destroyObject($changeset); } $properties = id(new DifferentialDiffProperty())->loadAllWhere( diff --git a/src/applications/differential/storage/DifferentialHunk.php b/src/applications/differential/storage/DifferentialHunk.php index fcc7926590..a57d0035eb 100644 --- a/src/applications/differential/storage/DifferentialHunk.php +++ b/src/applications/differential/storage/DifferentialHunk.php @@ -1,7 +1,10 @@ getChangeset()->hasAutomaticCapability($capability, $viewer); } + +/* -( PhabricatorDestructibleInterface )----------------------------------- */ + + + public function destroyObjectPermanently( + PhabricatorDestructionEngine $engine) { + $this->delete(); + } + + } diff --git a/src/applications/differential/storage/DifferentialModernHunk.php b/src/applications/differential/storage/DifferentialModernHunk.php index 9f0242ce5f..6f63f680a1 100644 --- a/src/applications/differential/storage/DifferentialModernHunk.php +++ b/src/applications/differential/storage/DifferentialModernHunk.php @@ -15,6 +15,7 @@ final class DifferentialModernHunk extends DifferentialHunk { private $rawData; private $forcedEncoding; + private $fileData; public function getTableName() { return 'differential_hunk_modern'; @@ -87,6 +88,57 @@ final class DifferentialModernHunk extends DifferentialHunk { return parent::save(); } + public function saveAsText() { + $old_type = $this->getDataType(); + $old_data = $this->getData(); + + if ($old_type == self::DATATYPE_TEXT) { + return $this; + } + + $raw_data = $this->getRawData(); + + $this->setDataType(self::DATATYPE_TEXT); + $this->setData($raw_data); + + $result = $this->save(); + + $this->destroyData($old_type, $old_data); + + return $result; + } + + public function saveAsFile() { + $old_type = $this->getDataType(); + $old_data = $this->getData(); + + if ($old_type == self::DATATYPE_FILE) { + return $this; + } + + $raw_data = $this->getRawData(); + + $file = PhabricatorFile::newFromFileData( + $raw_data, + array( + 'name' => 'differential-hunk', + 'mime-type' => 'application/octet-stream', + 'viewPolicy' => PhabricatorPolicies::POLICY_NOONE, + )); + + $this->setDataType(self::DATATYPE_FILE); + $this->setData($file->getPHID()); + + // NOTE: Because hunks don't have a PHID and we just load hunk data with + // the ominipotent viewer, we do not need to attach the file to anything. + + $result = $this->save(); + + $this->destroyData($old_type, $old_data); + + return $result; + } + private function getRawData() { if ($this->rawData === null) { $type = $this->getDataType(); @@ -98,6 +150,8 @@ final class DifferentialModernHunk extends DifferentialHunk { $data = $data; break; case self::DATATYPE_FILE: + $data = $this->loadFileData(); + break; default: throw new Exception( pht('Hunk has unsupported data type "%s"!', $type)); @@ -123,4 +177,75 @@ final class DifferentialModernHunk extends DifferentialHunk { return $this->rawData; } + private function loadFileData() { + if ($this->fileData === null) { + $type = $this->getDataType(); + if ($type !== self::DATATYPE_FILE) { + throw new Exception( + pht( + 'Unable to load file data for hunk with wrong data type ("%s").', + $type)); + } + + $file_phid = $this->getData(); + + $file = $this->loadRawFile($file_phid); + $data = $file->loadFileData(); + + $this->fileData = $data; + } + + return $this->fileData; + } + + private function loadRawFile($file_phid) { + $viewer = PhabricatorUser::getOmnipotentUser(); + + + $files = id(new PhabricatorFileQuery()) + ->setViewer($viewer) + ->withPHIDs(array($file_phid)) + ->execute(); + if (!$files) { + throw new Exception( + pht( + 'Failed to load file ("%s") with hunk data.', + $file_phid)); + } + + $file = head($files); + + return $file; + } + + + public function destroyObjectPermanently( + PhabricatorDestructionEngine $engine) { + + $type = $this->getDataType(); + $data = $this->getData(); + + $this->destroyData($type, $data, $engine); + + return parent::destroyObjectPermanently($engine); + } + + + private function destroyData( + $type, + $data, + PhabricatorDestructionEngine $engine = null) { + + if (!$engine) { + $engine = new PhabricatorDestructionEngine(); + } + + switch ($type) { + case self::DATATYPE_FILE: + $file = $this->loadRawFile($data); + $engine->destroyObject($file); + break; + } + } + } From 495ab7363b5bfbf92da3e66acd4edb580bdbb714 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 11 Sep 2017 16:14:10 -0700 Subject: [PATCH 02/17] Remove "Contains Words" constraint from Maniphest Summary: Ref T12819. Obsoleted by the Ferret engine, which is unprototyping shortly. This breaks compatibility in two ways: - `maniphest.query` no longer supports "fullText" (now throws an explicit exception). - Existing saved searches with a "Contains Words" constraint will no longer have that constraint. It seems unlikely (?) that either of these are seeing too much use, and they should be easy to fix. I'll note them in the changelog. Test Plan: Viewed Maniphest, no more "Contains Words" field. Called `maniphest.query` with "fullText", got explicit exception. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12819 Differential Revision: https://secure.phabricator.com/D18586 --- .../ManiphestQueryConduitAPIMethod.php | 5 ++- .../maniphest/query/ManiphestTaskQuery.php | 38 ------------------- .../query/ManiphestTaskSearchEngine.php | 8 ---- 3 files changed, 4 insertions(+), 47 deletions(-) diff --git a/src/applications/maniphest/conduit/ManiphestQueryConduitAPIMethod.php b/src/applications/maniphest/conduit/ManiphestQueryConduitAPIMethod.php index 45373d2587..7ddf3b03eb 100644 --- a/src/applications/maniphest/conduit/ManiphestQueryConduitAPIMethod.php +++ b/src/applications/maniphest/conduit/ManiphestQueryConduitAPIMethod.php @@ -102,7 +102,10 @@ final class ManiphestQueryConduitAPIMethod extends ManiphestConduitAPIMethod { $full_text = $request->getValue('fullText'); if ($full_text) { - $query->withFullTextSearch($full_text); + throw new Exception( + pht( + 'Parameter "fullText" is no longer supported. Use method '. + '"maniphest.search" with the "query" constraint instead.')); } $status = $request->getValue('status'); diff --git a/src/applications/maniphest/query/ManiphestTaskQuery.php b/src/applications/maniphest/query/ManiphestTaskQuery.php index f009e5c2ef..cfc69722d8 100644 --- a/src/applications/maniphest/query/ManiphestTaskQuery.php +++ b/src/applications/maniphest/query/ManiphestTaskQuery.php @@ -24,8 +24,6 @@ final class ManiphestTaskQuery extends PhabricatorCursorPagedPolicyAwareQuery { private $subtaskIDs; private $subtypes; - private $fullTextSearch = ''; - private $status = 'status-any'; const STATUS_ANY = 'status-any'; const STATUS_OPEN = 'status-open'; @@ -115,11 +113,6 @@ final class ManiphestTaskQuery extends PhabricatorCursorPagedPolicyAwareQuery { return $this; } - public function withFullTextSearch($fulltext_search) { - $this->fullTextSearch = $fulltext_search; - return $this; - } - public function setGroupBy($group) { $this->groupBy = $group; @@ -329,7 +322,6 @@ final class ManiphestTaskQuery extends PhabricatorCursorPagedPolicyAwareQuery { $where[] = $this->buildStatusWhereClause($conn); $where[] = $this->buildOwnerWhereClause($conn); - $where[] = $this->buildFullTextWhereClause($conn); if ($this->taskIDs !== null) { $where[] = qsprintf( @@ -481,36 +473,6 @@ final class ManiphestTaskQuery extends PhabricatorCursorPagedPolicyAwareQuery { return '('.implode(') OR (', $subclause).')'; } - private function buildFullTextWhereClause(AphrontDatabaseConnection $conn) { - if (!strlen($this->fullTextSearch)) { - return null; - } - - // In doing a fulltext search, we first find all the PHIDs that match the - // fulltext search, and then use that to limit the rest of the search - $fulltext_query = id(new PhabricatorSavedQuery()) - ->setEngineClassName('PhabricatorSearchApplicationSearchEngine') - ->setParameter('query', $this->fullTextSearch); - - // NOTE: Setting this to something larger than 10,000 will raise errors in - // Elasticsearch, and billions of results won't fit in memory anyway. - $fulltext_query->setParameter('limit', 10000); - $fulltext_query->setParameter('types', - array(ManiphestTaskPHIDType::TYPECONST)); - - $fulltext_results = PhabricatorSearchService::executeSearch( - $fulltext_query); - - if (empty($fulltext_results)) { - $fulltext_results = array(null); - } - - return qsprintf( - $conn, - 'task.phid IN (%Ls)', - $fulltext_results); - } - protected function buildJoinClauseParts(AphrontDatabaseConnection $conn) { $open_statuses = ManiphestTaskStatus::getOpenStatusConstants(); $edge_table = PhabricatorEdgeConfig::TABLE_NAME_EDGE; diff --git a/src/applications/maniphest/query/ManiphestTaskSearchEngine.php b/src/applications/maniphest/query/ManiphestTaskSearchEngine.php index 150ec81def..ec1956bd8e 100644 --- a/src/applications/maniphest/query/ManiphestTaskSearchEngine.php +++ b/src/applications/maniphest/query/ManiphestTaskSearchEngine.php @@ -86,9 +86,6 @@ final class ManiphestTaskSearchEngine pht('Search for tasks with given subtypes.')) ->setDatasource(new ManiphestTaskSubtypeDatasource()) ->setIsHidden($hide_subtypes), - id(new PhabricatorSearchTextField()) - ->setLabel(pht('Contains Words')) - ->setKey('fulltext'), id(new PhabricatorSearchThreeStateField()) ->setLabel(pht('Open Parents')) ->setKey('hasParents') @@ -144,7 +141,6 @@ final class ManiphestTaskSearchEngine 'statuses', 'priorities', 'subtypes', - 'fulltext', 'hasParents', 'hasSubtasks', 'parentIDs', @@ -220,10 +216,6 @@ final class ManiphestTaskSearchEngine $query->withOpenSubtasks($map['hasSubtasks']); } - if (strlen($map['fulltext'])) { - $query->withFullTextSearch($map['fulltext']); - } - if ($map['parentIDs']) { $query->withParentTaskIDs($map['parentIDs']); } From 6edf98eb3b8a30f9805f50775394d1eb57733dae Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 11 Sep 2017 16:22:39 -0700 Subject: [PATCH 03/17] Unprototype the Ferret UI fields Summary: Ref T12819. Show the new Ferret engine fields (and enable the indexer) unconditionally. Also pull them to the top since they're fairly general-purpose and appear more broadly now, and also they actually work correctly (WOW). Some redundant fields (like "Name Contains" in Repositories and Owners) could probably be removed now, I may clean those up in a followup. Test Plan: Browsed around, saw Ferret fields in UI without "(Prototype)" suffix. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12819 Differential Revision: https://secure.phabricator.com/D18587 --- .../search/engine/PhabricatorApplicationSearchEngine.php | 3 +++ .../PhabricatorFerretSearchEngineExtension.php | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/applications/search/engine/PhabricatorApplicationSearchEngine.php b/src/applications/search/engine/PhabricatorApplicationSearchEngine.php index 6122e66e23..f4c460ce34 100644 --- a/src/applications/search/engine/PhabricatorApplicationSearchEngine.php +++ b/src/applications/search/engine/PhabricatorApplicationSearchEngine.php @@ -324,6 +324,9 @@ abstract class PhabricatorApplicationSearchEngine extends Phobject { $result = $head + $body + $tail; + // Force the fulltext "query" field to the top unconditionally. + $result = array_select_keys($result, array('query')) + $result; + foreach ($this->getHiddenFields() as $hidden_key) { unset($result[$hidden_key]); } diff --git a/src/applications/search/engineextension/PhabricatorFerretSearchEngineExtension.php b/src/applications/search/engineextension/PhabricatorFerretSearchEngineExtension.php index 02aadf7336..65822b0a32 100644 --- a/src/applications/search/engineextension/PhabricatorFerretSearchEngineExtension.php +++ b/src/applications/search/engineextension/PhabricatorFerretSearchEngineExtension.php @@ -6,7 +6,7 @@ final class PhabricatorFerretSearchEngineExtension const EXTENSIONKEY = 'ferret'; public function isExtensionEnabled() { - return PhabricatorEnv::getEnvConfig('phabricator.show-prototypes'); + return true; } public function getExtensionName() { @@ -56,7 +56,7 @@ final class PhabricatorFerretSearchEngineExtension $fields[] = id(new PhabricatorSearchTextField()) ->setKey('query') - ->setLabel(pht('Query (Prototype)')) + ->setLabel(pht('Query')) ->setDescription(pht('Fulltext search.')); return $fields; From dd3f05ec2503cd92deb005639209b4b55c927b10 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 11 Sep 2017 16:30:35 -0700 Subject: [PATCH 04/17] Remove "Name Contains" query constraint from Diffusion for Repositories Summary: Ref T12819. Obsoleted by the Ferret engine "Query" field. This is a compatibility break, I'll note it in the changelog. Test Plan: Searched for repositories by name with "Query" instead of "Name Contains". Reviewers: chad Reviewed By: chad Maniphest Tasks: T12819 Differential Revision: https://secure.phabricator.com/D18588 --- .../repository/query/PhabricatorRepositoryQuery.php | 13 ------------- .../query/PhabricatorRepositorySearchEngine.php | 7 ------- 2 files changed, 20 deletions(-) diff --git a/src/applications/repository/query/PhabricatorRepositoryQuery.php b/src/applications/repository/query/PhabricatorRepositoryQuery.php index 85b2ea0f0d..ffa9fa1b59 100644 --- a/src/applications/repository/query/PhabricatorRepositoryQuery.php +++ b/src/applications/repository/query/PhabricatorRepositoryQuery.php @@ -8,7 +8,6 @@ final class PhabricatorRepositoryQuery private $callsigns; private $types; private $uuids; - private $nameContains; private $uris; private $datasourceQuery; private $slugs; @@ -116,11 +115,6 @@ final class PhabricatorRepositoryQuery return $this; } - public function withNameContains($contains) { - $this->nameContains = $contains; - return $this; - } - public function withURIs(array $uris) { $this->uris = $uris; return $this; @@ -661,13 +655,6 @@ final class PhabricatorRepositoryQuery $this->uuids); } - if (strlen($this->nameContains)) { - $where[] = qsprintf( - $conn, - 'r.name LIKE %~', - $this->nameContains); - } - if (strlen($this->datasourceQuery)) { // This handles having "rP" match callsigns starting with "P...". $query = trim($this->datasourceQuery); diff --git a/src/applications/repository/query/PhabricatorRepositorySearchEngine.php b/src/applications/repository/query/PhabricatorRepositorySearchEngine.php index f321a112d9..5cd88183e1 100644 --- a/src/applications/repository/query/PhabricatorRepositorySearchEngine.php +++ b/src/applications/repository/query/PhabricatorRepositorySearchEngine.php @@ -24,9 +24,6 @@ final class PhabricatorRepositorySearchEngine id(new PhabricatorSearchStringListField()) ->setLabel(pht('Callsigns')) ->setKey('callsigns'), - id(new PhabricatorSearchTextField()) - ->setLabel(pht('Name Contains')) - ->setKey('name'), id(new PhabricatorSearchSelectField()) ->setLabel(pht('Status')) ->setKey('status') @@ -72,10 +69,6 @@ final class PhabricatorRepositorySearchEngine $query->withTypes($map['types']); } - if (strlen($map['name'])) { - $query->withNameContains($map['name']); - } - if ($map['uris']) { $query->withURIs($map['uris']); } From 39b74572e6f73cee600c1af71f104aec90577a0c Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 11 Sep 2017 16:35:09 -0700 Subject: [PATCH 05/17] Return fulltext tokens from the Ferret fulltext engine Summary: Ref T12819. These render the little "Searched For: X, Y, U V" hint about how something was parsed. (This might get a "substring" color or "title only" color or something in the future.) Test Plan: {F5178807} Reviewers: chad Reviewed By: chad Maniphest Tasks: T12819 Differential Revision: https://secure.phabricator.com/D18589 --- .../PhabricatorFerretFulltextStorageEngine.php | 4 ++++ .../policy/PhabricatorCursorPagedPolicyAwareQuery.php | 11 +++++++++++ 2 files changed, 15 insertions(+) diff --git a/src/applications/search/fulltextstorage/PhabricatorFerretFulltextStorageEngine.php b/src/applications/search/fulltextstorage/PhabricatorFerretFulltextStorageEngine.php index 74e8771de7..b3618db5ff 100644 --- a/src/applications/search/fulltextstorage/PhabricatorFerretFulltextStorageEngine.php +++ b/src/applications/search/fulltextstorage/PhabricatorFerretFulltextStorageEngine.php @@ -86,6 +86,10 @@ final class PhabricatorFerretFulltextStorageEngine $type_results[$type] = $results; $metadata += $engine_query->getFerretMetadata(); + + if (!$this->fulltextTokens) { + $this->fulltextTokens = $engine_query->getFerretTokens(); + } } $list = array(); diff --git a/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php b/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php index 0488ba6133..5cacd66d06 100644 --- a/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php +++ b/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php @@ -1469,6 +1469,17 @@ abstract class PhabricatorCursorPagedPolicyAwareQuery return $this; } + public function getFerretTokens() { + if (!$this->supportsFerretEngine()) { + throw new Exception( + pht( + 'Query ("%s") does not support the Ferret fulltext engine.', + get_class($this))); + } + + return $this->ferretTokens; + } + public function withFerretConstraint( PhabricatorFerretEngine $engine, array $fulltext_tokens) { From da0a08a7e13e01d5e34bb0a12706a7b4f9e348d6 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 11 Sep 2017 16:40:52 -0700 Subject: [PATCH 06/17] Make "mysql" mean "Ferret engine" in Fulltext search Summary: Ref T12819. Swaps constants so existing configurations that use a "mysql" engine now use the Ferret engine, not an InnoDB/MyISAM FULLTEXT engine. Test Plan: Swapped my local config back to "mysql" (the default), saw Ferret engine results in the UI. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12819 Differential Revision: https://secure.phabricator.com/D18590 --- src/__phutil_library_map__.php | 2 - ...PhabricatorFerretFulltextStorageEngine.php | 2 +- .../PhabricatorMySQLFulltextStorageEngine.php | 504 ------------------ 3 files changed, 1 insertion(+), 507 deletions(-) delete mode 100644 src/applications/search/fulltextstorage/PhabricatorMySQLFulltextStorageEngine.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 925dfc66c6..97f5b480a4 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -3197,7 +3197,6 @@ phutil_register_library_map(array( 'PhabricatorMustVerifyEmailController' => 'applications/auth/controller/PhabricatorMustVerifyEmailController.php', 'PhabricatorMySQLConfigOptions' => 'applications/config/option/PhabricatorMySQLConfigOptions.php', 'PhabricatorMySQLFileStorageEngine' => 'applications/files/engine/PhabricatorMySQLFileStorageEngine.php', - 'PhabricatorMySQLFulltextStorageEngine' => 'applications/search/fulltextstorage/PhabricatorMySQLFulltextStorageEngine.php', 'PhabricatorMySQLSearchHost' => 'infrastructure/cluster/search/PhabricatorMySQLSearchHost.php', 'PhabricatorMySQLSetupCheck' => 'applications/config/check/PhabricatorMySQLSetupCheck.php', 'PhabricatorNamedQuery' => 'applications/search/storage/PhabricatorNamedQuery.php', @@ -8588,7 +8587,6 @@ phutil_register_library_map(array( 'PhabricatorMustVerifyEmailController' => 'PhabricatorAuthController', 'PhabricatorMySQLConfigOptions' => 'PhabricatorApplicationConfigOptions', 'PhabricatorMySQLFileStorageEngine' => 'PhabricatorFileStorageEngine', - 'PhabricatorMySQLFulltextStorageEngine' => 'PhabricatorFulltextStorageEngine', 'PhabricatorMySQLSearchHost' => 'PhabricatorSearchHost', 'PhabricatorMySQLSetupCheck' => 'PhabricatorSetupCheck', 'PhabricatorNamedQuery' => array( diff --git a/src/applications/search/fulltextstorage/PhabricatorFerretFulltextStorageEngine.php b/src/applications/search/fulltextstorage/PhabricatorFerretFulltextStorageEngine.php index b3618db5ff..a7d9570c57 100644 --- a/src/applications/search/fulltextstorage/PhabricatorFerretFulltextStorageEngine.php +++ b/src/applications/search/fulltextstorage/PhabricatorFerretFulltextStorageEngine.php @@ -7,7 +7,7 @@ final class PhabricatorFerretFulltextStorageEngine private $engineLimits; public function getEngineIdentifier() { - return 'ferret'; + return 'mysql'; } public function getHostType() { diff --git a/src/applications/search/fulltextstorage/PhabricatorMySQLFulltextStorageEngine.php b/src/applications/search/fulltextstorage/PhabricatorMySQLFulltextStorageEngine.php deleted file mode 100644 index c2e38d2db7..0000000000 --- a/src/applications/search/fulltextstorage/PhabricatorMySQLFulltextStorageEngine.php +++ /dev/null @@ -1,504 +0,0 @@ -getPHID(); - if (!$phid) { - throw new Exception(pht('Document has no PHID!')); - } - - $store = new PhabricatorSearchDocument(); - $store->setPHID($doc->getPHID()); - $store->setDocumentType($doc->getDocumentType()); - $store->setDocumentTitle($doc->getDocumentTitle()); - $store->setDocumentCreated($doc->getDocumentCreated()); - $store->setDocumentModified($doc->getDocumentModified()); - $store->replace(); - - $conn_w = $store->establishConnection('w'); - - $stemmer = new PhutilSearchStemmer(); - - $field_dao = new PhabricatorSearchDocumentField(); - queryfx( - $conn_w, - 'DELETE FROM %T WHERE phid = %s', - $field_dao->getTableName(), - $phid); - foreach ($doc->getFieldData() as $field) { - list($ftype, $corpus, $aux_phid) = $field; - - $stemmed_corpus = $stemmer->stemCorpus($corpus); - - queryfx( - $conn_w, - 'INSERT INTO %T - (phid, phidType, field, auxPHID, corpus, stemmedCorpus) '. - 'VALUES (%s, %s, %s, %ns, %s, %s)', - $field_dao->getTableName(), - $phid, - $doc->getDocumentType(), - $ftype, - $aux_phid, - $corpus, - $stemmed_corpus); - } - - - $sql = array(); - foreach ($doc->getRelationshipData() as $relationship) { - list($rtype, $to_phid, $to_type, $time) = $relationship; - $sql[] = qsprintf( - $conn_w, - '(%s, %s, %s, %s, %d)', - $phid, - $to_phid, - $rtype, - $to_type, - $time); - } - - $rship_dao = new PhabricatorSearchDocumentRelationship(); - queryfx( - $conn_w, - 'DELETE FROM %T WHERE phid = %s', - $rship_dao->getTableName(), - $phid); - if ($sql) { - queryfx( - $conn_w, - 'INSERT INTO %T '. - '(phid, relatedPHID, relation, relatedType, relatedTime) '. - 'VALUES %Q', - $rship_dao->getTableName(), - implode(', ', $sql)); - } - - } - - public function executeSearch(PhabricatorSavedQuery $query) { - $table = new PhabricatorSearchDocument(); - $document_table = $table->getTableName(); - $conn = $table->establishConnection('r'); - - $subquery = $this->newFulltextSubquery($query, $conn); - - $offset = (int)$query->getParameter('offset', 0); - $limit = (int)$query->getParameter('limit', 25); - - // NOTE: We must JOIN the subquery in order to apply a limit. - $results = queryfx_all( - $conn, - 'SELECT - documentPHID, - MAX(fieldScore) AS documentScore - FROM (%Q) query - JOIN %T root ON query.documentPHID = root.phid - GROUP BY documentPHID - ORDER BY documentScore DESC - LIMIT %d, %d', - $subquery, - $document_table, - $offset, - $limit); - - return ipull($results, 'documentPHID'); - } - - private function newFulltextSubquery( - PhabricatorSavedQuery $query, - AphrontDatabaseConnection $conn) { - - $field = new PhabricatorSearchDocumentField(); - $field_table = $field->getTableName(); - - $document = new PhabricatorSearchDocument(); - $document_table = $document->getTableName(); - - $select = array(); - $select[] = 'document.phid AS documentPHID'; - - $join = array(); - $where = array(); - - $title_field = PhabricatorSearchDocumentFieldType::FIELD_TITLE; - $title_boost = 1024; - - $stemmer = new PhutilSearchStemmer(); - - $raw_query = $query->getParameter('query'); - $raw_query = trim($raw_query); - if (strlen($raw_query)) { - $compiler = PhabricatorSearchDocument::newQueryCompiler() - ->setStemmer($stemmer); - - $tokens = $compiler->newTokens($raw_query); - - list($min_length, $stopword_list) = $this->getEngineLimits($conn); - - // Process all the parts of the user's query so we can show them which - // parts we searched for and which ones we ignored. - $fulltext_tokens = array(); - foreach ($tokens as $key => $token) { - $fulltext_token = id(new PhabricatorFulltextToken()) - ->setToken($token); - - $fulltext_tokens[$key] = $fulltext_token; - - $value = $token->getValue(); - - // If the value is unquoted, we'll stem it in the query, so stem it - // here before performing filtering tests. See T12596. - if (!$token->isQuoted()) { - $value = $stemmer->stemToken($value); - } - - if ($this->isShortToken($value, $min_length)) { - $fulltext_token->setIsShort(true); - continue; - } - - if (isset($stopword_list[phutil_utf8_strtolower($value)])) { - $fulltext_token->setIsStopword(true); - continue; - } - } - $this->fulltextTokens = $fulltext_tokens; - - // Remove tokens which aren't queryable from the query. This is mostly - // a workaround for the peculiar behaviors described in T12137. - foreach ($this->fulltextTokens as $key => $fulltext_token) { - if (!$fulltext_token->isQueryable()) { - unset($tokens[$key]); - } - } - - if (!$tokens) { - throw new PhutilSearchQueryCompilerSyntaxException( - pht( - 'All of your search terms are too short or too common to '. - 'appear in the search index. Search for longer or more '. - 'distinctive terms.')); - } - - $queries = array(); - $queries[] = $compiler->compileLiteralQuery($tokens); - $queries[] = $compiler->compileStemmedQuery($tokens); - $compiled_query = implode(' ', array_filter($queries)); - } else { - $compiled_query = null; - } - - if (strlen($compiled_query)) { - $select[] = qsprintf( - $conn, - 'IF(field.field = %s, %d, 0) + - MATCH(corpus, stemmedCorpus) AGAINST (%s IN BOOLEAN MODE) - AS fieldScore', - $title_field, - $title_boost, - $compiled_query); - - $join[] = qsprintf( - $conn, - '%T field ON field.phid = document.phid', - $field_table); - - $where[] = qsprintf( - $conn, - 'MATCH(corpus, stemmedCorpus) AGAINST (%s IN BOOLEAN MODE)', - $compiled_query); - - if ($query->getParameter('field')) { - $where[] = qsprintf( - $conn, - 'field.field = %s', - $field); - } - } else { - $select[] = qsprintf( - $conn, - 'document.documentCreated AS fieldScore'); - } - - $exclude = $query->getParameter('exclude'); - if ($exclude) { - $where[] = qsprintf( - $conn, - 'document.phid != %s', - $exclude); - } - - $types = $query->getParameter('types'); - if ($types) { - if (strlen($compiled_query)) { - $where[] = qsprintf( - $conn, - 'field.phidType IN (%Ls)', - $types); - } - - $where[] = qsprintf( - $conn, - 'document.documentType IN (%Ls)', - $types); - } - - $join[] = $this->joinRelationship( - $conn, - $query, - 'authorPHIDs', - PhabricatorSearchRelationship::RELATIONSHIP_AUTHOR); - - $statuses = $query->getParameter('statuses', array()); - $statuses = array_fuse($statuses); - $open_rel = PhabricatorSearchRelationship::RELATIONSHIP_OPEN; - $closed_rel = PhabricatorSearchRelationship::RELATIONSHIP_CLOSED; - $include_open = !empty($statuses[$open_rel]); - $include_closed = !empty($statuses[$closed_rel]); - - if ($include_open && !$include_closed) { - $join[] = $this->joinRelationship( - $conn, - $query, - 'statuses', - $open_rel, - true); - } else if ($include_closed && !$include_open) { - $join[] = $this->joinRelationship( - $conn, - $query, - 'statuses', - $closed_rel, - true); - } - - if ($query->getParameter('withAnyOwner')) { - $join[] = $this->joinRelationship( - $conn, - $query, - 'withAnyOwner', - PhabricatorSearchRelationship::RELATIONSHIP_OWNER, - true); - } else if ($query->getParameter('withUnowned')) { - $join[] = $this->joinRelationship( - $conn, - $query, - 'withUnowned', - PhabricatorSearchRelationship::RELATIONSHIP_UNOWNED, - true); - } else { - $join[] = $this->joinRelationship( - $conn, - $query, - 'ownerPHIDs', - PhabricatorSearchRelationship::RELATIONSHIP_OWNER); - } - - $join[] = $this->joinRelationship( - $conn, - $query, - 'subscriberPHIDs', - PhabricatorSearchRelationship::RELATIONSHIP_SUBSCRIBER); - - $join[] = $this->joinRelationship( - $conn, - $query, - 'projectPHIDs', - PhabricatorSearchRelationship::RELATIONSHIP_PROJECT); - - $join[] = $this->joinRelationship( - $conn, - $query, - 'repository', - PhabricatorSearchRelationship::RELATIONSHIP_REPOSITORY); - - $select = implode(', ', $select); - - $join = array_filter($join); - foreach ($join as $key => $clause) { - $join[$key] = ' JOIN '.$clause; - } - $join = implode(' ', $join); - - if ($where) { - $where = 'WHERE '.implode(' AND ', $where); - } else { - $where = ''; - } - - if (strlen($compiled_query)) { - $order = ''; - } else { - // When not executing a query, order by document creation date. This - // is the default view in object browser dialogs, like "Close Duplicate". - $order = qsprintf( - $conn, - 'ORDER BY document.documentCreated DESC'); - } - - return qsprintf( - $conn, - 'SELECT %Q FROM %T document %Q %Q %Q LIMIT 1000', - $select, - $document_table, - $join, - $where, - $order); - } - - protected function joinRelationship( - AphrontDatabaseConnection $conn, - PhabricatorSavedQuery $query, - $field, - $type, - $is_existence = false) { - - $sql = qsprintf( - $conn, - '%T AS %C ON %C.phid = document.phid AND %C.relation = %s', - id(new PhabricatorSearchDocumentRelationship())->getTableName(), - $field, - $field, - $field, - $type); - - if (!$is_existence) { - $phids = $query->getParameter($field, array()); - if (!$phids) { - return null; - } - $sql .= qsprintf( - $conn, - ' AND %C.relatedPHID in (%Ls)', - $field, - $phids); - } - - return $sql; - } - - public function indexExists() { - return true; - } - - public function getIndexStats() { - return false; - } - - public function getFulltextTokens() { - return $this->fulltextTokens; - } - - private function getEngineLimits(AphrontDatabaseConnection $conn) { - if ($this->engineLimits === null) { - $this->engineLimits = $this->newEngineLimits($conn); - } - return $this->engineLimits; - } - - private function newEngineLimits(AphrontDatabaseConnection $conn) { - // First, try InnoDB. Some database may not have both table engines, so - // selecting variables from missing table engines can fail and throw. - - try { - $result = queryfx_one( - $conn, - 'SELECT @@innodb_ft_min_token_size innodb_max, - @@innodb_ft_server_stopword_table innodb_stopword_config'); - } catch (AphrontQueryException $ex) { - $result = null; - } - - if ($result) { - $min_len = $result['innodb_max']; - - $stopword_config = $result['innodb_stopword_config']; - if (preg_match('(/)', $stopword_config)) { - // If the setting is nonempty and contains a slash, query the - // table the user has configured. - $parts = explode('/', $stopword_config); - list($stopword_database, $stopword_table) = $parts; - } else { - // Otherwise, query the InnoDB default stopword table. - $stopword_database = 'INFORMATION_SCHEMA'; - $stopword_table = 'INNODB_FT_DEFAULT_STOPWORD'; - } - - $stopwords = queryfx_all( - $conn, - 'SELECT * FROM %T.%T', - $stopword_database, - $stopword_table); - $stopwords = ipull($stopwords, 'value'); - $stopwords = array_fuse($stopwords); - - return array($min_len, $stopwords); - } - - // If InnoDB fails, try MyISAM. - $result = queryfx_one( - $conn, - 'SELECT - @@ft_min_word_len myisam_max, - @@ft_stopword_file myisam_stopwords'); - - $min_len = $result['myisam_max']; - - $file = $result['myisam_stopwords']; - if (preg_match('(/resources/sql/stopwords\.txt\z)', $file)) { - // If this is set to something that looks like the Phabricator - // stopword file, read that. - $file = 'stopwords.txt'; - } else { - // Otherwise, just use the default stopwords. This might be wrong - // but we can't read the actual value dynamically and reading - // whatever file the variable is set to could be a big headache - // to get right from a security perspective. - $file = 'stopwords_myisam.txt'; - } - - $root = dirname(phutil_get_library_root('phabricator')); - $data = Filesystem::readFile($root.'/resources/sql/'.$file); - $stopwords = explode("\n", $data); - $stopwords = array_filter($stopwords); - $stopwords = array_fuse($stopwords); - - return array($min_len, $stopwords); - } - - private function isShortToken($value, $min_length) { - // NOTE: The engine tokenizes internally on periods, so terms in the form - // "ab.cd", where short substrings are separated by periods, do not produce - // any queryable tokens. These terms are meaningful if at least one - // substring is longer than the minimum length, like "example.py". See - // T12928. This also applies to words with intermediate apostrophes, like - // "to's". - - $parts = preg_split('/[.\']+/', $value); - - foreach ($parts as $part) { - if (phutil_utf8_strlen($part) >= $min_length) { - return false; - } - } - - return true; - } - -} From e6f0f865187a4429eca5deafebe198203e9a6fcc Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 12 Sep 2017 07:35:15 -0700 Subject: [PATCH 07/17] Document Ferret engine fulltext search features Summary: Ref T12819. Adds some documentation for `-term`, `~term`, `title:term`, etc. Test Plan: Read documentation. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12819 Differential Revision: https://secure.phabricator.com/D18592 --- src/docs/user/userguide/search.diviner | 50 ++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/src/docs/user/userguide/search.diviner b/src/docs/user/userguide/search.diviner index f2d564bc75..875edc6d0f 100644 --- a/src/docs/user/userguide/search.diviner +++ b/src/docs/user/userguide/search.diviner @@ -123,3 +123,53 @@ Another useful function is the `viewer()` function, which works as though you'd typed your own username when you run the query. However, if you send the query to someone else, it will show results for //their// username when they run it. This can be particularly useful when creating dashboard panels. + + +Fulltext Search +=============== + +Global search and some applications provide **fulltext search**. In +applications, this is a field called {nav Query}. + +Fulltext search allows you to search the text content of objects and supports +some special syntax. These features are supported: + + - Substring search with `~platypus`. + - Field search with `title:platypus`. + - Filtering out matches with `-platypus`. + - Quoted terms with `"platypus attorney"`. + - Combining features with `title:~"platypus attorney"`. + +See below for more detail. + +**Substrings**: Normally, query terms are searched for as words, so searching +for `read` won't find documents which only contain the word `threaded`, even +though "read" is a substring of "threaded". With the substring operator, `~`, +you can search for substrings instead: the query `~read` will match documents +which contain that text anywhere, even in the middle of a word. + +**Quoted Terms**: When you search for multiple terms, documents which match +each term will be returned, even if the terms are not adjacent in the document. +For example, the query `void star` will match a document titled `A star in the +void`, because it matches both `void` and `star`. To search for an exact +sequence of terms, quote them: `"void star"`. This query will only match +documents which use those terms as written. + +**Stemming**: Searching for a term like `rearming` will find documents which +contain variations of the word, like `rearm`, `rearms`, and `rearmed`. To +search for an an exact word, quote the term: `"rearming"`. + +**Field Search**: By default, query terms are searched for in the title, body, +and comments. If you only want to search for a term in titles, use `title:`. +For example, `title:platypus` only finds documents with that term in the +title. This can be combined with other operators, for example `title:~platypus` +or `title:"platypus attorney"`. These scopes are also supported: + + - `title:...` searches titles. + - `body:...` searches bodies (descriptions or summaries). + - `core:...` searches titles and bodies, but not comments. + - `comments:...` searches only comments. + +**Filtering Matches**: You can remove documents which match certain terms from +the result set with `-`. For example: `platypus -mammal`. Documents which match +negated terms will be filtered out of the result set. From fdc0d8c2f6f3543de6a68fe26bdeda2bf9c530ed Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 12 Sep 2017 07:44:29 -0700 Subject: [PATCH 08/17] Fix an issue with selecting the right stemmed ngrams with Ferret engine queries Summary: Ref T12819. In D18581, I corrected one bug (ngram selection for terms) but introduced a minor new bug. We now pass `' query '` (term corpus with boundary spaces) to the stemmer, but it bails out on this since English words don't start with spaces. Trim these extra boundary spaces off before invoking the stemmer. The practical effect of this is that searching for non-stem variations of a word ("detection") now finds stemmed variations again ("detect"). Prior to fixing this bug, the stem could find longer variations but not the other way around. Test Plan: Searched for "detection", found results matching "detect" after patch (and saw same results for "detect" and "detection"). Reviewers: chad Reviewed By: chad Maniphest Tasks: T12819 Differential Revision: https://secure.phabricator.com/D18593 --- .../query/policy/PhabricatorCursorPagedPolicyAwareQuery.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php b/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php index 5cacd66d06..cd4ccf30b5 100644 --- a/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php +++ b/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php @@ -1683,6 +1683,9 @@ abstract class PhabricatorCursorPagedPolicyAwareQuery // If this is a stemmed term, only look for ngrams present in both the // unstemmed and stemmed variations. if ($is_stemmed) { + // Trim the boundary space characters so the stemmer recognizes this + // is (or, at least, may be) a normal word and activates. + $terms_value = trim($terms_value, ' '); $stem_value = $stemmer->stemToken($terms_value); $stem_ngrams = $engine->getTermNgramsFromString($stem_value); $ngrams = array_intersect($ngrams, $stem_ngrams); From 124e580f6ec776fcb03d74883f27f998430bad09 Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 12 Sep 2017 08:16:28 -0700 Subject: [PATCH 09/17] Issue upgrade guidance to rebuild indexes for the Ferret engine Summary: Ref T12819. This is shipping, so issue upgrade guidance to instruct installs to rebuild the index. Also generate a new `quickstart.sql` since we haven't regenerated in a bit and there's been a large amount of table churn fairly recently. Test Plan: Ran `bin/storage upgrade`, saw guidance notification in UI. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12819 Differential Revision: https://secure.phabricator.com/D18594 --- .../20170912.ferret.01.activity.php | 19 + resources/sql/quickstart.sql | 552 +++++++++++++++++- 2 files changed, 549 insertions(+), 22 deletions(-) create mode 100644 resources/sql/autopatches/20170912.ferret.01.activity.php diff --git a/resources/sql/autopatches/20170912.ferret.01.activity.php b/resources/sql/autopatches/20170912.ferret.01.activity.php new file mode 100644 index 0000000000..cafd60c928 --- /dev/null +++ b/resources/sql/autopatches/20170912.ferret.01.activity.php @@ -0,0 +1,19 @@ +loadAllWhere('1 = 1 LIMIT 1'); +if (!$users) { + return; +} + +try { + id(new PhabricatorConfigManualActivity()) + ->setActivityType(PhabricatorConfigManualActivity::TYPE_REINDEX) + ->save(); +} catch (AphrontDuplicateKeyQueryException $ex) { + // If we've already noted that this activity is required, just move on. +} diff --git a/resources/sql/quickstart.sql b/resources/sql/quickstart.sql index b992c03522..e9ae4465a4 100644 --- a/resources/sql/quickstart.sql +++ b/resources/sql/quickstart.sql @@ -95,6 +95,42 @@ CREATE TABLE `calendar_event` ( KEY `key_space` (`spacePHID`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +CREATE TABLE `calendar_event_fdocument` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `objectPHID` varbinary(64) NOT NULL, + `isClosed` tinyint(1) NOT NULL, + `authorPHID` varbinary(64) DEFAULT NULL, + `ownerPHID` varbinary(64) DEFAULT NULL, + `epochCreated` int(10) unsigned NOT NULL, + `epochModified` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_object` (`objectPHID`), + KEY `key_author` (`authorPHID`), + KEY `key_owner` (`ownerPHID`), + KEY `key_created` (`epochCreated`), + KEY `key_modified` (`epochModified`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `calendar_event_ffield` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `fieldKey` varchar(4) COLLATE {$COLLATE_TEXT} NOT NULL, + `rawCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `termCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `normalCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_documentfield` (`documentID`,`fieldKey`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `calendar_event_fngrams` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `ngram` char(3) COLLATE {$COLLATE_TEXT} NOT NULL, + PRIMARY KEY (`id`), + KEY `key_ngram` (`ngram`,`documentID`), + KEY `key_object` (`documentID`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + CREATE TABLE `calendar_eventinvitee` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `eventPHID` varbinary(64) NOT NULL, @@ -452,7 +488,7 @@ CREATE TABLE `daemon_log` ( PRIMARY KEY (`id`), UNIQUE KEY `key_daemonID` (`daemonID`), KEY `status` (`status`), - KEY `dateCreated` (`dateCreated`) + KEY `key_modified` (`dateModified`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; CREATE TABLE `daemon_logevent` ( @@ -602,17 +638,6 @@ CREATE TABLE `differential_difftransaction` ( KEY `key_object` (`objectPHID`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; -CREATE TABLE `differential_draft` ( - `id` int(10) unsigned NOT NULL AUTO_INCREMENT, - `objectPHID` varbinary(64) NOT NULL, - `authorPHID` varbinary(64) NOT NULL, - `draftKey` varchar(64) COLLATE {$COLLATE_TEXT} NOT NULL, - `dateCreated` int(10) unsigned NOT NULL, - `dateModified` int(10) unsigned NOT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `key_unique` (`objectPHID`,`authorPHID`,`draftKey`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; - CREATE TABLE `differential_hiddencomment` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `userPHID` varbinary(64) NOT NULL, @@ -697,6 +722,42 @@ CREATE TABLE `differential_revision` ( KEY `key_status` (`status`,`phid`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +CREATE TABLE `differential_revision_fdocument` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `objectPHID` varbinary(64) NOT NULL, + `isClosed` tinyint(1) NOT NULL, + `authorPHID` varbinary(64) DEFAULT NULL, + `ownerPHID` varbinary(64) DEFAULT NULL, + `epochCreated` int(10) unsigned NOT NULL, + `epochModified` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_object` (`objectPHID`), + KEY `key_author` (`authorPHID`), + KEY `key_owner` (`ownerPHID`), + KEY `key_created` (`epochCreated`), + KEY `key_modified` (`epochModified`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `differential_revision_ffield` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `fieldKey` varchar(4) COLLATE {$COLLATE_TEXT} NOT NULL, + `rawCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `termCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `normalCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_documentfield` (`documentID`,`fieldKey`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `differential_revision_fngrams` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `ngram` char(3) COLLATE {$COLLATE_TEXT} NOT NULL, + PRIMARY KEY (`id`), + KEY `key_ngram` (`ngram`,`documentID`), + KEY `key_object` (`documentID`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + CREATE TABLE `differential_revisionhash` ( `revisionID` int(10) unsigned NOT NULL, `type` binary(4) NOT NULL, @@ -1767,7 +1828,7 @@ CREATE TABLE `maniphest_task` ( `phid` varbinary(64) NOT NULL, `authorPHID` varbinary(64) NOT NULL, `ownerPHID` varbinary(64) DEFAULT NULL, - `status` varchar(12) COLLATE {$COLLATE_TEXT} NOT NULL, + `status` varchar(64) COLLATE {$COLLATE_TEXT} NOT NULL, `priority` int(10) unsigned NOT NULL, `title` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, `originalTitle` longtext COLLATE {$COLLATE_TEXT} NOT NULL, @@ -1801,6 +1862,42 @@ CREATE TABLE `maniphest_task` ( KEY `key_space` (`spacePHID`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +CREATE TABLE `maniphest_task_fdocument` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `objectPHID` varbinary(64) NOT NULL, + `isClosed` tinyint(1) NOT NULL, + `authorPHID` varbinary(64) DEFAULT NULL, + `ownerPHID` varbinary(64) DEFAULT NULL, + `epochCreated` int(10) unsigned NOT NULL, + `epochModified` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_object` (`objectPHID`), + KEY `key_author` (`authorPHID`), + KEY `key_owner` (`ownerPHID`), + KEY `key_created` (`epochCreated`), + KEY `key_modified` (`epochModified`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `maniphest_task_ffield` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `fieldKey` varchar(4) COLLATE {$COLLATE_TEXT} NOT NULL, + `rawCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `normalCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `termCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_documentfield` (`documentID`,`fieldKey`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `maniphest_task_fngrams` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `ngram` char(3) COLLATE {$COLLATE_TEXT} NOT NULL, + PRIMARY KEY (`id`), + KEY `key_ngram` (`ngram`,`documentID`), + KEY `key_object` (`documentID`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + CREATE TABLE `maniphest_transaction` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `phid` varbinary(64) NOT NULL, @@ -1857,7 +1954,7 @@ CREATE TABLE `patch_status` ( PRIMARY KEY (`patch`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; -INSERT INTO `patch_status` VALUES ('phabricator:000.project.sql',1492953699,NULL),('phabricator:0000.legacy.sql',1492953699,NULL),('phabricator:001.maniphest_projects.sql',1492953699,NULL),('phabricator:002.oauth.sql',1492953699,NULL),('phabricator:003.more_oauth.sql',1492953699,NULL),('phabricator:004.daemonrepos.sql',1492953699,NULL),('phabricator:005.workers.sql',1492953699,NULL),('phabricator:006.repository.sql',1492953699,NULL),('phabricator:007.daemonlog.sql',1492953699,NULL),('phabricator:008.repoopt.sql',1492953699,NULL),('phabricator:009.repo_summary.sql',1492953699,NULL),('phabricator:010.herald.sql',1492953699,NULL),('phabricator:011.badcommit.sql',1492953699,NULL),('phabricator:012.dropphidtype.sql',1492953699,NULL),('phabricator:013.commitdetail.sql',1492953699,NULL),('phabricator:014.shortcuts.sql',1492953699,NULL),('phabricator:015.preferences.sql',1492953699,NULL),('phabricator:016.userrealnameindex.sql',1492953699,NULL),('phabricator:017.sessionkeys.sql',1492953700,NULL),('phabricator:018.owners.sql',1492953700,NULL),('phabricator:019.arcprojects.sql',1492953700,NULL),('phabricator:020.pathcapital.sql',1492953700,NULL),('phabricator:021.xhpastview.sql',1492953700,NULL),('phabricator:022.differentialcommit.sql',1492953700,NULL),('phabricator:023.dxkeys.sql',1492953700,NULL),('phabricator:024.mlistkeys.sql',1492953700,NULL),('phabricator:025.commentopt.sql',1492953700,NULL),('phabricator:026.diffpropkey.sql',1492953700,NULL),('phabricator:027.metamtakeys.sql',1492953700,NULL),('phabricator:028.systemagent.sql',1492953700,NULL),('phabricator:029.cursors.sql',1492953700,NULL),('phabricator:030.imagemacro.sql',1492953700,NULL),('phabricator:031.workerrace.sql',1492953700,NULL),('phabricator:032.viewtime.sql',1492953700,NULL),('phabricator:033.privtest.sql',1492953700,NULL),('phabricator:034.savedheader.sql',1492953700,NULL),('phabricator:035.proxyimage.sql',1492953700,NULL),('phabricator:036.mailkey.sql',1492953700,NULL),('phabricator:037.setuptest.sql',1492953700,NULL),('phabricator:038.admin.sql',1492953700,NULL),('phabricator:039.userlog.sql',1492953700,NULL),('phabricator:040.transform.sql',1492953700,NULL),('phabricator:041.heraldrepetition.sql',1492953700,NULL),('phabricator:042.commentmetadata.sql',1492953700,NULL),('phabricator:043.pastebin.sql',1492953700,NULL),('phabricator:044.countdown.sql',1492953700,NULL),('phabricator:045.timezone.sql',1492953700,NULL),('phabricator:046.conduittoken.sql',1492953700,NULL),('phabricator:047.projectstatus.sql',1492953700,NULL),('phabricator:048.relationshipkeys.sql',1492953700,NULL),('phabricator:049.projectowner.sql',1492953700,NULL),('phabricator:050.taskdenormal.sql',1492953700,NULL),('phabricator:051.projectfilter.sql',1492953700,NULL),('phabricator:052.pastelanguage.sql',1492953700,NULL),('phabricator:053.feed.sql',1492953700,NULL),('phabricator:054.subscribers.sql',1492953700,NULL),('phabricator:055.add_author_to_files.sql',1492953700,NULL),('phabricator:056.slowvote.sql',1492953700,NULL),('phabricator:057.parsecache.sql',1492953701,NULL),('phabricator:058.missingkeys.sql',1492953701,NULL),('phabricator:059.engines.php',1492953701,NULL),('phabricator:060.phriction.sql',1492953701,NULL),('phabricator:061.phrictioncontent.sql',1492953701,NULL),('phabricator:062.phrictionmenu.sql',1492953701,NULL),('phabricator:063.pasteforks.sql',1492953701,NULL),('phabricator:064.subprojects.sql',1492953701,NULL),('phabricator:065.sshkeys.sql',1492953701,NULL),('phabricator:066.phrictioncontent.sql',1492953701,NULL),('phabricator:067.preferences.sql',1492953701,NULL),('phabricator:068.maniphestauxiliarystorage.sql',1492953701,NULL),('phabricator:069.heraldxscript.sql',1492953701,NULL),('phabricator:070.differentialaux.sql',1492953701,NULL),('phabricator:071.contentsource.sql',1492953701,NULL),('phabricator:072.blamerevert.sql',1492953701,NULL),('phabricator:073.reposymbols.sql',1492953701,NULL),('phabricator:074.affectedpath.sql',1492953701,NULL),('phabricator:075.revisionhash.sql',1492953701,NULL),('phabricator:076.indexedlanguages.sql',1492953701,NULL),('phabricator:077.originalemail.sql',1492953701,NULL),('phabricator:078.nametoken.sql',1492953701,NULL),('phabricator:079.nametokenindex.php',1492953701,NULL),('phabricator:080.filekeys.sql',1492953701,NULL),('phabricator:081.filekeys.php',1492953701,NULL),('phabricator:082.xactionkey.sql',1492953701,NULL),('phabricator:083.dxviewtime.sql',1492953701,NULL),('phabricator:084.pasteauthorkey.sql',1492953701,NULL),('phabricator:085.packagecommitrelationship.sql',1492953701,NULL),('phabricator:086.formeraffil.sql',1492953701,NULL),('phabricator:087.phrictiondelete.sql',1492953701,NULL),('phabricator:088.audit.sql',1492953701,NULL),('phabricator:089.projectwiki.sql',1492953701,NULL),('phabricator:090.forceuniqueprojectnames.php',1492953701,NULL),('phabricator:091.uniqueslugkey.sql',1492953701,NULL),('phabricator:092.dropgithubnotification.sql',1492953701,NULL),('phabricator:093.gitremotes.php',1492953701,NULL),('phabricator:094.phrictioncolumn.sql',1492953701,NULL),('phabricator:095.directory.sql',1492953701,NULL),('phabricator:096.filename.sql',1492953701,NULL),('phabricator:097.heraldruletypes.sql',1492953701,NULL),('phabricator:098.heraldruletypemigration.php',1492953701,NULL),('phabricator:099.drydock.sql',1492953701,NULL),('phabricator:100.projectxaction.sql',1492953701,NULL),('phabricator:101.heraldruleapplied.sql',1492953701,NULL),('phabricator:102.heraldcleanup.php',1492953701,NULL),('phabricator:103.heraldedithistory.sql',1492953701,NULL),('phabricator:104.searchkey.sql',1492953702,NULL),('phabricator:105.mimetype.sql',1492953702,NULL),('phabricator:106.chatlog.sql',1492953702,NULL),('phabricator:107.oauthserver.sql',1492953702,NULL),('phabricator:108.oauthscope.sql',1492953702,NULL),('phabricator:109.oauthclientphidkey.sql',1492953702,NULL),('phabricator:110.commitaudit.sql',1492953702,NULL),('phabricator:111.commitauditmigration.php',1492953702,NULL),('phabricator:112.oauthaccesscoderedirecturi.sql',1492953702,NULL),('phabricator:113.lastreviewer.sql',1492953702,NULL),('phabricator:114.auditrequest.sql',1492953702,NULL),('phabricator:115.prepareutf8.sql',1492953702,NULL),('phabricator:116.utf8-backup-first-expect-wait.sql',1492953704,NULL),('phabricator:117.repositorydescription.php',1492953704,NULL),('phabricator:118.auditinline.sql',1492953704,NULL),('phabricator:119.filehash.sql',1492953704,NULL),('phabricator:120.noop.sql',1492953704,NULL),('phabricator:121.drydocklog.sql',1492953704,NULL),('phabricator:122.flag.sql',1492953704,NULL),('phabricator:123.heraldrulelog.sql',1492953704,NULL),('phabricator:124.subpriority.sql',1492953704,NULL),('phabricator:125.ipv6.sql',1492953704,NULL),('phabricator:126.edges.sql',1492953704,NULL),('phabricator:127.userkeybody.sql',1492953704,NULL),('phabricator:128.phabricatorcom.sql',1492953704,NULL),('phabricator:129.savedquery.sql',1492953704,NULL),('phabricator:130.denormalrevisionquery.sql',1492953704,NULL),('phabricator:131.migraterevisionquery.php',1492953704,NULL),('phabricator:132.phame.sql',1492953704,NULL),('phabricator:133.imagemacro.sql',1492953704,NULL),('phabricator:134.emptysearch.sql',1492953704,NULL),('phabricator:135.datecommitted.sql',1492953704,NULL),('phabricator:136.sex.sql',1492953704,NULL),('phabricator:137.auditmetadata.sql',1492953704,NULL),('phabricator:138.notification.sql',1492953704,NULL),('phabricator:20121209.pholioxactions.sql',1492953705,NULL),('phabricator:20121209.xmacroadd.sql',1492953705,NULL),('phabricator:20121209.xmacromigrate.php',1492953705,NULL),('phabricator:20121209.xmacromigratekey.sql',1492953705,NULL),('phabricator:20121220.generalcache.sql',1492953705,NULL),('phabricator:20121226.config.sql',1492953705,NULL),('phabricator:20130101.confxaction.sql',1492953705,NULL),('phabricator:20130102.metamtareceivedmailmessageidhash.sql',1492953705,NULL),('phabricator:20130103.filemetadata.sql',1492953705,NULL),('phabricator:20130111.conpherence.sql',1492953705,NULL),('phabricator:20130127.altheraldtranscript.sql',1492953705,NULL),('phabricator:20130131.conpherencepics.sql',1492953705,NULL),('phabricator:20130201.revisionunsubscribed.php',1492953705,NULL),('phabricator:20130201.revisionunsubscribed.sql',1492953705,NULL),('phabricator:20130214.chatlogchannel.sql',1492953705,NULL),('phabricator:20130214.chatlogchannelid.sql',1492953705,NULL),('phabricator:20130214.token.sql',1492953705,NULL),('phabricator:20130215.phabricatorfileaddttl.sql',1492953705,NULL),('phabricator:20130217.cachettl.sql',1492953705,NULL),('phabricator:20130218.longdaemon.sql',1492953705,NULL),('phabricator:20130218.updatechannelid.php',1492953705,NULL),('phabricator:20130219.commitsummary.sql',1492953705,NULL),('phabricator:20130219.commitsummarymig.php',1492953705,NULL),('phabricator:20130222.dropchannel.sql',1492953705,NULL),('phabricator:20130226.commitkey.sql',1492953705,NULL),('phabricator:20130304.lintauthor.sql',1492953705,NULL),('phabricator:20130310.xactionmeta.sql',1492953705,NULL),('phabricator:20130317.phrictionedge.sql',1492953705,NULL),('phabricator:20130319.conpherence.sql',1492953705,NULL),('phabricator:20130319.phabricatorfileexplicitupload.sql',1492953705,NULL),('phabricator:20130320.phlux.sql',1492953705,NULL),('phabricator:20130321.token.sql',1492953705,NULL),('phabricator:20130322.phortune.sql',1492953705,NULL),('phabricator:20130323.phortunepayment.sql',1492953705,NULL),('phabricator:20130324.phortuneproduct.sql',1492953705,NULL),('phabricator:20130330.phrequent.sql',1492953705,NULL),('phabricator:20130403.conpherencecache.sql',1492953705,NULL),('phabricator:20130403.conpherencecachemig.php',1492953705,NULL),('phabricator:20130409.commitdrev.php',1492953705,NULL),('phabricator:20130417.externalaccount.sql',1492953705,NULL),('phabricator:20130423.conpherenceindices.sql',1492953706,NULL),('phabricator:20130423.phortunepaymentrevised.sql',1492953706,NULL),('phabricator:20130423.updateexternalaccount.sql',1492953705,NULL),('phabricator:20130426.search_savedquery.sql',1492953706,NULL),('phabricator:20130502.countdownrevamp1.sql',1492953706,NULL),('phabricator:20130502.countdownrevamp2.php',1492953706,NULL),('phabricator:20130502.countdownrevamp3.sql',1492953706,NULL),('phabricator:20130507.releephrqmailkey.sql',1492953706,NULL),('phabricator:20130507.releephrqmailkeypop.php',1492953706,NULL),('phabricator:20130507.releephrqsimplifycols.sql',1492953706,NULL),('phabricator:20130508.releephtransactions.sql',1492953706,NULL),('phabricator:20130508.releephtransactionsmig.php',1492953706,NULL),('phabricator:20130508.search_namedquery.sql',1492953706,NULL),('phabricator:20130513.receviedmailstatus.sql',1492953706,NULL),('phabricator:20130519.diviner.sql',1492953706,NULL),('phabricator:20130521.dropconphimages.sql',1492953706,NULL),('phabricator:20130523.maniphest_owners.sql',1492953706,NULL),('phabricator:20130524.repoxactions.sql',1492953706,NULL),('phabricator:20130529.macroauthor.sql',1492953706,NULL),('phabricator:20130529.macroauthormig.php',1492953706,NULL),('phabricator:20130530.macrodatekey.sql',1492953706,NULL),('phabricator:20130530.pastekeys.sql',1492953706,NULL),('phabricator:20130530.sessionhash.php',1492953706,NULL),('phabricator:20130531.filekeys.sql',1492953706,NULL),('phabricator:20130602.morediviner.sql',1492953706,NULL),('phabricator:20130602.namedqueries.sql',1492953706,NULL),('phabricator:20130606.userxactions.sql',1492953706,NULL),('phabricator:20130607.xaccount.sql',1492953706,NULL),('phabricator:20130611.migrateoauth.php',1492953706,NULL),('phabricator:20130611.nukeldap.php',1492953706,NULL),('phabricator:20130613.authdb.sql',1492953706,NULL),('phabricator:20130619.authconf.php',1492953706,NULL),('phabricator:20130620.diffxactions.sql',1492953706,NULL),('phabricator:20130621.diffcommentphid.sql',1492953706,NULL),('phabricator:20130621.diffcommentphidmig.php',1492953706,NULL),('phabricator:20130621.diffcommentunphid.sql',1492953706,NULL),('phabricator:20130622.doorkeeper.sql',1492953706,NULL),('phabricator:20130628.legalpadv0.sql',1492953706,NULL),('phabricator:20130701.conduitlog.sql',1492953706,NULL),('phabricator:20130703.legalpaddocdenorm.php',1492953707,NULL),('phabricator:20130703.legalpaddocdenorm.sql',1492953707,NULL),('phabricator:20130709.droptimeline.sql',1492953707,NULL),('phabricator:20130709.legalpadsignature.sql',1492953707,NULL),('phabricator:20130711.pholioimageobsolete.php',1492953707,NULL),('phabricator:20130711.pholioimageobsolete.sql',1492953707,NULL),('phabricator:20130711.pholioimageobsolete2.sql',1492953707,NULL),('phabricator:20130711.trimrealnames.php',1492953707,NULL),('phabricator:20130714.votexactions.sql',1492953707,NULL),('phabricator:20130715.votecomments.php',1492953707,NULL),('phabricator:20130715.voteedges.sql',1492953707,NULL),('phabricator:20130716.archivememberlessprojects.php',1492953707,NULL),('phabricator:20130722.pholioreplace.sql',1492953707,NULL),('phabricator:20130723.taskstarttime.sql',1492953707,NULL),('phabricator:20130726.ponderxactions.sql',1492953707,NULL),('phabricator:20130727.ponderquestionstatus.sql',1492953707,NULL),('phabricator:20130728.ponderunique.php',1492953707,NULL),('phabricator:20130728.ponderuniquekey.sql',1492953707,NULL),('phabricator:20130728.ponderxcomment.php',1492953707,NULL),('phabricator:20130731.releephcutpointidentifier.sql',1492953707,NULL),('phabricator:20130731.releephproject.sql',1492953707,NULL),('phabricator:20130731.releephrepoid.sql',1492953707,NULL),('phabricator:20130801.pastexactions.php',1492953707,NULL),('phabricator:20130801.pastexactions.sql',1492953707,NULL),('phabricator:20130802.heraldphid.sql',1492953707,NULL),('phabricator:20130802.heraldphids.php',1492953707,NULL),('phabricator:20130802.heraldphidukey.sql',1492953707,NULL),('phabricator:20130802.heraldxactions.sql',1492953707,NULL),('phabricator:20130805.pasteedges.sql',1492953707,NULL),('phabricator:20130805.pastemailkey.sql',1492953707,NULL),('phabricator:20130805.pastemailkeypop.php',1492953707,NULL),('phabricator:20130814.usercustom.sql',1492953707,NULL),('phabricator:20130820.file-mailkey-populate.php',1492953707,NULL),('phabricator:20130820.filemailkey.sql',1492953707,NULL),('phabricator:20130820.filexactions.sql',1492953707,NULL),('phabricator:20130820.releephxactions.sql',1492953707,NULL),('phabricator:20130826.divinernode.sql',1492953707,NULL),('phabricator:20130912.maniphest.1.touch.sql',1492953707,NULL),('phabricator:20130912.maniphest.2.created.sql',1492953707,NULL),('phabricator:20130912.maniphest.3.nameindex.sql',1492953707,NULL),('phabricator:20130912.maniphest.4.fillindex.php',1492953707,NULL),('phabricator:20130913.maniphest.1.migratesearch.php',1492953707,NULL),('phabricator:20130914.usercustom.sql',1492953707,NULL),('phabricator:20130915.maniphestcustom.sql',1492953707,NULL),('phabricator:20130915.maniphestmigrate.php',1492953707,NULL),('phabricator:20130915.maniphestqdrop.sql',1492953708,NULL),('phabricator:20130919.mfieldconf.php',1492953707,NULL),('phabricator:20130920.repokeyspolicy.sql',1492953707,NULL),('phabricator:20130921.mtransactions.sql',1492953707,NULL),('phabricator:20130921.xmigratemaniphest.php',1492953707,NULL),('phabricator:20130923.mrename.sql',1492953707,NULL),('phabricator:20130924.mdraftkey.sql',1492953707,NULL),('phabricator:20130925.mpolicy.sql',1492953707,NULL),('phabricator:20130925.xpolicy.sql',1492953707,NULL),('phabricator:20130926.dcustom.sql',1492953707,NULL),('phabricator:20130926.dinkeys.sql',1492953707,NULL),('phabricator:20130926.dinline.php',1492953708,NULL),('phabricator:20130927.audiomacro.sql',1492953708,NULL),('phabricator:20130929.filepolicy.sql',1492953708,NULL),('phabricator:20131004.dxedgekey.sql',1492953708,NULL),('phabricator:20131004.dxreviewers.php',1492953708,NULL),('phabricator:20131006.hdisable.sql',1492953708,NULL),('phabricator:20131010.pstorage.sql',1492953708,NULL),('phabricator:20131015.cpolicy.sql',1492953708,NULL),('phabricator:20131020.col1.sql',1492953708,NULL),('phabricator:20131020.harbormaster.sql',1492953708,NULL),('phabricator:20131020.pcustom.sql',1492953708,NULL),('phabricator:20131020.pxaction.sql',1492953708,NULL),('phabricator:20131020.pxactionmig.php',1492953708,NULL),('phabricator:20131025.repopush.sql',1492953708,NULL),('phabricator:20131026.commitstatus.sql',1492953708,NULL),('phabricator:20131030.repostatusmessage.sql',1492953708,NULL),('phabricator:20131031.vcspassword.sql',1492953708,NULL),('phabricator:20131105.buildstep.sql',1492953708,NULL),('phabricator:20131106.diffphid.1.col.sql',1492953708,NULL),('phabricator:20131106.diffphid.2.mig.php',1492953708,NULL),('phabricator:20131106.diffphid.3.key.sql',1492953708,NULL),('phabricator:20131106.nuance-v0.sql',1492953708,NULL),('phabricator:20131107.buildlog.sql',1492953708,NULL),('phabricator:20131112.userverified.1.col.sql',1492953708,NULL),('phabricator:20131112.userverified.2.mig.php',1492953708,NULL),('phabricator:20131118.ownerorder.php',1492953708,NULL),('phabricator:20131119.passphrase.sql',1492953708,NULL),('phabricator:20131120.nuancesourcetype.sql',1492953708,NULL),('phabricator:20131121.passphraseedge.sql',1492953708,NULL),('phabricator:20131121.repocredentials.1.col.sql',1492953708,NULL),('phabricator:20131121.repocredentials.2.mig.php',1492953708,NULL),('phabricator:20131122.repomirror.sql',1492953708,NULL),('phabricator:20131123.drydockblueprintpolicy.sql',1492953708,NULL),('phabricator:20131129.drydockresourceblueprint.sql',1492953708,NULL),('phabricator:20131204.pushlog.sql',1492953708,NULL),('phabricator:20131205.buildsteporder.sql',1492953708,NULL),('phabricator:20131205.buildstepordermig.php',1492953708,NULL),('phabricator:20131205.buildtargets.sql',1492953708,NULL),('phabricator:20131206.phragment.sql',1492953708,NULL),('phabricator:20131206.phragmentnull.sql',1492953708,NULL),('phabricator:20131208.phragmentsnapshot.sql',1492953708,NULL),('phabricator:20131211.phragmentedges.sql',1492953708,NULL),('phabricator:20131217.pushlogphid.1.col.sql',1492953708,NULL),('phabricator:20131217.pushlogphid.2.mig.php',1492953708,NULL),('phabricator:20131217.pushlogphid.3.key.sql',1492953708,NULL),('phabricator:20131219.pxdrop.sql',1492953708,NULL),('phabricator:20131224.harbormanual.sql',1492953708,NULL),('phabricator:20131227.heraldobject.sql',1492953708,NULL),('phabricator:20131231.dropshortcut.sql',1492953708,NULL),('phabricator:20131302.maniphestvalue.sql',1492953705,NULL),('phabricator:20140104.harbormastercmd.sql',1492953709,NULL),('phabricator:20140106.macromailkey.1.sql',1492953709,NULL),('phabricator:20140106.macromailkey.2.php',1492953709,NULL),('phabricator:20140108.ddbpname.1.sql',1492953709,NULL),('phabricator:20140108.ddbpname.2.php',1492953709,NULL),('phabricator:20140109.ddxactions.sql',1492953709,NULL),('phabricator:20140109.projectcolumnsdates.sql',1492953709,NULL),('phabricator:20140113.legalpadsig.1.sql',1492953709,NULL),('phabricator:20140113.legalpadsig.2.php',1492953709,NULL),('phabricator:20140115.auth.1.id.sql',1492953709,NULL),('phabricator:20140115.auth.2.expires.sql',1492953709,NULL),('phabricator:20140115.auth.3.unlimit.php',1492953709,NULL),('phabricator:20140115.legalpadsigkey.sql',1492953709,NULL),('phabricator:20140116.reporefcursor.sql',1492953709,NULL),('phabricator:20140126.diff.1.parentrevisionid.sql',1492953709,NULL),('phabricator:20140126.diff.2.repositoryphid.sql',1492953709,NULL),('phabricator:20140130.dash.1.board.sql',1492953709,NULL),('phabricator:20140130.dash.2.panel.sql',1492953709,NULL),('phabricator:20140130.dash.3.boardxaction.sql',1492953709,NULL),('phabricator:20140130.dash.4.panelxaction.sql',1492953709,NULL),('phabricator:20140130.mail.1.retry.sql',1492953709,NULL),('phabricator:20140130.mail.2.next.sql',1492953709,NULL),('phabricator:20140201.gc.1.mailsent.sql',1492953709,NULL),('phabricator:20140201.gc.2.mailreceived.sql',1492953709,NULL),('phabricator:20140205.cal.1.rename.sql',1492953709,NULL),('phabricator:20140205.cal.2.phid-col.sql',1492953709,NULL),('phabricator:20140205.cal.3.phid-mig.php',1492953709,NULL),('phabricator:20140205.cal.4.phid-key.sql',1492953709,NULL),('phabricator:20140210.herald.rule-condition-mig.php',1492953709,NULL),('phabricator:20140210.projcfield.1.blurb.php',1492953709,NULL),('phabricator:20140210.projcfield.2.piccol.sql',1492953709,NULL),('phabricator:20140210.projcfield.3.picmig.sql',1492953709,NULL),('phabricator:20140210.projcfield.4.memmig.sql',1492953709,NULL),('phabricator:20140210.projcfield.5.dropprofile.sql',1492953709,NULL),('phabricator:20140211.dx.1.nullablechangesetid.sql',1492953709,NULL),('phabricator:20140211.dx.2.migcommenttext.php',1492953709,NULL),('phabricator:20140211.dx.3.migsubscriptions.sql',1492953709,NULL),('phabricator:20140211.dx.999.drop.relationships.sql',1492953709,NULL),('phabricator:20140212.dx.1.armageddon.php',1492953709,NULL),('phabricator:20140214.clean.1.legacycommentid.sql',1492953709,NULL),('phabricator:20140214.clean.2.dropcomment.sql',1492953709,NULL),('phabricator:20140214.clean.3.dropinline.sql',1492953709,NULL),('phabricator:20140218.differentialdraft.sql',1492953709,NULL),('phabricator:20140218.passwords.1.extend.sql',1492953709,NULL),('phabricator:20140218.passwords.2.prefix.sql',1492953709,NULL),('phabricator:20140218.passwords.3.vcsextend.sql',1492953709,NULL),('phabricator:20140218.passwords.4.vcs.php',1492953709,NULL),('phabricator:20140223.bigutf8scratch.sql',1492953709,NULL),('phabricator:20140224.dxclean.1.datecommitted.sql',1492953709,NULL),('phabricator:20140226.dxcustom.1.fielddata.php',1492953709,NULL),('phabricator:20140226.dxcustom.99.drop.sql',1492953709,NULL),('phabricator:20140228.dxcomment.1.sql',1492953709,NULL),('phabricator:20140305.diviner.1.slugcol.sql',1492953709,NULL),('phabricator:20140305.diviner.2.slugkey.sql',1492953709,NULL),('phabricator:20140311.mdroplegacy.sql',1492953709,NULL),('phabricator:20140314.projectcolumn.1.statuscol.sql',1492953709,NULL),('phabricator:20140314.projectcolumn.2.statuskey.sql',1492953709,NULL),('phabricator:20140317.mupdatedkey.sql',1492953709,NULL),('phabricator:20140321.harbor.1.bxaction.sql',1492953709,NULL),('phabricator:20140321.mstatus.1.col.sql',1492953709,NULL),('phabricator:20140321.mstatus.2.mig.php',1492953709,NULL),('phabricator:20140323.harbor.1.renames.php',1492953709,NULL),('phabricator:20140323.harbor.2.message.sql',1492953709,NULL),('phabricator:20140325.push.1.event.sql',1492953709,NULL),('phabricator:20140325.push.2.eventphid.sql',1492953709,NULL),('phabricator:20140325.push.3.groups.php',1492953709,NULL),('phabricator:20140325.push.4.prune.sql',1492953709,NULL),('phabricator:20140326.project.1.colxaction.sql',1492953709,NULL),('phabricator:20140328.releeph.1.productxaction.sql',1492953709,NULL),('phabricator:20140330.flagtext.sql',1492953709,NULL),('phabricator:20140402.actionlog.sql',1492953709,NULL),('phabricator:20140410.accountsecret.1.sql',1492953709,NULL),('phabricator:20140410.accountsecret.2.php',1492953709,NULL),('phabricator:20140416.harbor.1.sql',1492953710,NULL),('phabricator:20140420.rel.1.objectphid.sql',1492953710,NULL),('phabricator:20140420.rel.2.objectmig.php',1492953710,NULL),('phabricator:20140421.slowvotecolumnsisclosed.sql',1492953710,NULL),('phabricator:20140423.session.1.hisec.sql',1492953710,NULL),('phabricator:20140427.mfactor.1.sql',1492953710,NULL),('phabricator:20140430.auth.1.partial.sql',1492953710,NULL),('phabricator:20140430.dash.1.paneltype.sql',1492953710,NULL),('phabricator:20140430.dash.2.edge.sql',1492953710,NULL),('phabricator:20140501.passphraselockcredential.sql',1492953710,NULL),('phabricator:20140501.remove.1.dlog.sql',1492953710,NULL),('phabricator:20140507.smstable.sql',1492953710,NULL),('phabricator:20140509.coverage.1.sql',1492953710,NULL),('phabricator:20140509.dashboardlayoutconfig.sql',1492953710,NULL),('phabricator:20140512.dparents.1.sql',1492953710,NULL),('phabricator:20140514.harbormasterbuildabletransaction.sql',1492953710,NULL),('phabricator:20140514.pholiomockclose.sql',1492953710,NULL),('phabricator:20140515.trust-emails.sql',1492953710,NULL),('phabricator:20140517.dxbinarycache.sql',1492953710,NULL),('phabricator:20140518.dxmorebinarycache.sql',1492953710,NULL),('phabricator:20140519.dashboardinstall.sql',1492953710,NULL),('phabricator:20140520.authtemptoken.sql',1492953710,NULL),('phabricator:20140521.projectslug.1.create.sql',1492953710,NULL),('phabricator:20140521.projectslug.2.mig.php',1492953710,NULL),('phabricator:20140522.projecticon.sql',1492953710,NULL),('phabricator:20140524.auth.mfa.cache.sql',1492953710,NULL),('phabricator:20140525.hunkmodern.sql',1492953710,NULL),('phabricator:20140615.pholioedit.1.sql',1492953710,NULL),('phabricator:20140615.pholioedit.2.sql',1492953710,NULL),('phabricator:20140617.daemon.explicit-argv.sql',1492953710,NULL),('phabricator:20140617.daemonlog.sql',1492953710,NULL),('phabricator:20140624.projcolor.1.sql',1492953710,NULL),('phabricator:20140624.projcolor.2.sql',1492953710,NULL),('phabricator:20140629.dasharchive.1.sql',1492953710,NULL),('phabricator:20140629.legalsig.1.sql',1492953710,NULL),('phabricator:20140629.legalsig.2.php',1492953710,NULL),('phabricator:20140701.legalexemption.1.sql',1492953710,NULL),('phabricator:20140701.legalexemption.2.sql',1492953710,NULL),('phabricator:20140703.legalcorp.1.sql',1492953710,NULL),('phabricator:20140703.legalcorp.2.sql',1492953710,NULL),('phabricator:20140703.legalcorp.3.sql',1492953710,NULL),('phabricator:20140703.legalcorp.4.sql',1492953710,NULL),('phabricator:20140703.legalcorp.5.sql',1492953710,NULL),('phabricator:20140704.harbormasterstep.1.sql',1492953710,NULL),('phabricator:20140704.harbormasterstep.2.sql',1492953710,NULL),('phabricator:20140704.legalpreamble.1.sql',1492953710,NULL),('phabricator:20140706.harbormasterdepend.1.php',1492953710,NULL),('phabricator:20140706.pedge.1.sql',1492953710,NULL),('phabricator:20140711.pnames.1.sql',1492953710,NULL),('phabricator:20140711.pnames.2.php',1492953710,NULL),('phabricator:20140711.workerpriority.sql',1492953710,NULL),('phabricator:20140712.projcoluniq.sql',1492953710,NULL),('phabricator:20140721.phortune.1.cart.sql',1492953710,NULL),('phabricator:20140721.phortune.2.purchase.sql',1492953710,NULL),('phabricator:20140721.phortune.3.charge.sql',1492953710,NULL),('phabricator:20140721.phortune.4.cartstatus.sql',1492953710,NULL),('phabricator:20140721.phortune.5.cstatusdefault.sql',1492953710,NULL),('phabricator:20140721.phortune.6.onetimecharge.sql',1492953710,NULL),('phabricator:20140721.phortune.7.nullmethod.sql',1492953710,NULL),('phabricator:20140722.appname.php',1492953710,NULL),('phabricator:20140722.audit.1.xactions.sql',1492953710,NULL),('phabricator:20140722.audit.2.comments.sql',1492953710,NULL),('phabricator:20140722.audit.3.miginlines.php',1492953710,NULL),('phabricator:20140722.audit.4.migtext.php',1492953710,NULL),('phabricator:20140722.renameauth.php',1492953710,NULL),('phabricator:20140723.apprenamexaction.sql',1492953710,NULL),('phabricator:20140725.audit.1.migxactions.php',1492953710,NULL),('phabricator:20140731.audit.1.subscribers.php',1492953710,NULL),('phabricator:20140731.cancdn.php',1492953710,NULL),('phabricator:20140731.harbormasterstepdesc.sql',1492953710,NULL),('phabricator:20140805.boardcol.1.sql',1492953710,NULL),('phabricator:20140805.boardcol.2.php',1492953710,NULL),('phabricator:20140807.harbormastertargettime.sql',1492953711,NULL),('phabricator:20140808.boardprop.1.sql',1492953711,NULL),('phabricator:20140808.boardprop.2.sql',1492953711,NULL),('phabricator:20140808.boardprop.3.php',1492953711,NULL),('phabricator:20140811.blob.1.sql',1492953711,NULL),('phabricator:20140811.blob.2.sql',1492953711,NULL),('phabricator:20140812.projkey.1.sql',1492953711,NULL),('phabricator:20140812.projkey.2.sql',1492953711,NULL),('phabricator:20140814.passphrasecredentialconduit.sql',1492953711,NULL),('phabricator:20140815.cancdncase.php',1492953711,NULL),('phabricator:20140818.harbormasterindex.1.sql',1492953711,NULL),('phabricator:20140821.harbormasterbuildgen.1.sql',1492953711,NULL),('phabricator:20140822.daemonenvhash.sql',1492953711,NULL),('phabricator:20140902.almanacdevice.1.sql',1492953711,NULL),('phabricator:20140904.macroattach.php',1492953711,NULL),('phabricator:20140911.fund.1.initiative.sql',1492953711,NULL),('phabricator:20140911.fund.2.xaction.sql',1492953711,NULL),('phabricator:20140911.fund.3.edge.sql',1492953711,NULL),('phabricator:20140911.fund.4.backer.sql',1492953711,NULL),('phabricator:20140911.fund.5.backxaction.sql',1492953711,NULL),('phabricator:20140914.betaproto.php',1492953711,NULL),('phabricator:20140917.project.canlock.sql',1492953711,NULL),('phabricator:20140918.schema.1.dropaudit.sql',1492953711,NULL),('phabricator:20140918.schema.2.dropauditinline.sql',1492953711,NULL),('phabricator:20140918.schema.3.wipecache.sql',1492953711,NULL),('phabricator:20140918.schema.4.cachetype.sql',1492953711,NULL),('phabricator:20140918.schema.5.slowvote.sql',1492953711,NULL),('phabricator:20140919.schema.01.calstatus.sql',1492953711,NULL),('phabricator:20140919.schema.02.calname.sql',1492953711,NULL),('phabricator:20140919.schema.03.dropaux.sql',1492953711,NULL),('phabricator:20140919.schema.04.droptaskproj.sql',1492953711,NULL),('phabricator:20140926.schema.01.droprelev.sql',1492953711,NULL),('phabricator:20140926.schema.02.droprelreqev.sql',1492953711,NULL),('phabricator:20140926.schema.03.dropldapinfo.sql',1492953711,NULL),('phabricator:20140926.schema.04.dropoauthinfo.sql',1492953711,NULL),('phabricator:20140926.schema.05.dropprojaffil.sql',1492953711,NULL),('phabricator:20140926.schema.06.dropsubproject.sql',1492953711,NULL),('phabricator:20140926.schema.07.droppondcom.sql',1492953711,NULL),('phabricator:20140927.schema.01.dropsearchq.sql',1492953711,NULL),('phabricator:20140927.schema.02.pholio1.sql',1492953711,NULL),('phabricator:20140927.schema.03.pholio2.sql',1492953711,NULL),('phabricator:20140927.schema.04.pholio3.sql',1492953711,NULL),('phabricator:20140927.schema.05.phragment1.sql',1492953711,NULL),('phabricator:20140927.schema.06.releeph1.sql',1492953711,NULL),('phabricator:20141001.schema.01.version.sql',1492953711,NULL),('phabricator:20141001.schema.02.taskmail.sql',1492953711,NULL),('phabricator:20141002.schema.01.liskcounter.sql',1492953711,NULL),('phabricator:20141002.schema.02.draftnull.sql',1492953711,NULL),('phabricator:20141004.currency.01.sql',1492953711,NULL),('phabricator:20141004.currency.02.sql',1492953711,NULL),('phabricator:20141004.currency.03.sql',1492953711,NULL),('phabricator:20141004.currency.04.sql',1492953711,NULL),('phabricator:20141004.currency.05.sql',1492953711,NULL),('phabricator:20141004.currency.06.sql',1492953711,NULL),('phabricator:20141004.harborliskcounter.sql',1492953711,NULL),('phabricator:20141005.phortuneproduct.sql',1492953711,NULL),('phabricator:20141006.phortunecart.sql',1492953711,NULL),('phabricator:20141006.phortunemerchant.sql',1492953711,NULL),('phabricator:20141006.phortunemerchantx.sql',1492953711,NULL),('phabricator:20141007.fundmerchant.sql',1492953711,NULL),('phabricator:20141007.fundrisks.sql',1492953711,NULL),('phabricator:20141007.fundtotal.sql',1492953711,NULL),('phabricator:20141007.phortunecartmerchant.sql',1492953711,NULL),('phabricator:20141007.phortunecharge.sql',1492953711,NULL),('phabricator:20141007.phortunepayment.sql',1492953712,NULL),('phabricator:20141007.phortuneprovider.sql',1492953712,NULL),('phabricator:20141007.phortuneproviderx.sql',1492953712,NULL),('phabricator:20141008.phortunemerchdesc.sql',1492953712,NULL),('phabricator:20141008.phortuneprovdis.sql',1492953712,NULL),('phabricator:20141008.phortunerefund.sql',1492953712,NULL),('phabricator:20141010.fundmailkey.sql',1492953712,NULL),('phabricator:20141011.phortunemerchedit.sql',1492953712,NULL),('phabricator:20141012.phortunecartxaction.sql',1492953712,NULL),('phabricator:20141013.phortunecartkey.sql',1492953712,NULL),('phabricator:20141016.almanac.device.sql',1492953712,NULL),('phabricator:20141016.almanac.dxaction.sql',1492953712,NULL),('phabricator:20141016.almanac.interface.sql',1492953712,NULL),('phabricator:20141016.almanac.network.sql',1492953712,NULL),('phabricator:20141016.almanac.nxaction.sql',1492953712,NULL),('phabricator:20141016.almanac.service.sql',1492953712,NULL),('phabricator:20141016.almanac.sxaction.sql',1492953712,NULL),('phabricator:20141017.almanac.binding.sql',1492953712,NULL),('phabricator:20141017.almanac.bxaction.sql',1492953712,NULL),('phabricator:20141025.phriction.1.xaction.sql',1492953712,NULL),('phabricator:20141025.phriction.2.xaction.sql',1492953712,NULL),('phabricator:20141025.phriction.mailkey.sql',1492953712,NULL),('phabricator:20141103.almanac.1.delprop.sql',1492953712,NULL),('phabricator:20141103.almanac.2.addprop.sql',1492953712,NULL),('phabricator:20141104.almanac.3.edge.sql',1492953712,NULL),('phabricator:20141105.ssh.1.rename.sql',1492953712,NULL),('phabricator:20141106.dropold.sql',1492953712,NULL),('phabricator:20141106.uniqdrafts.php',1492953712,NULL),('phabricator:20141107.phriction.policy.1.sql',1492953712,NULL),('phabricator:20141107.phriction.policy.2.php',1492953712,NULL),('phabricator:20141107.phriction.popkeys.php',1492953712,NULL),('phabricator:20141107.ssh.1.colname.sql',1492953712,NULL),('phabricator:20141107.ssh.2.keyhash.sql',1492953712,NULL),('phabricator:20141107.ssh.3.keyindex.sql',1492953712,NULL),('phabricator:20141107.ssh.4.keymig.php',1492953712,NULL),('phabricator:20141107.ssh.5.indexnull.sql',1492953712,NULL),('phabricator:20141107.ssh.6.indexkey.sql',1492953712,NULL),('phabricator:20141107.ssh.7.colnull.sql',1492953712,NULL),('phabricator:20141113.auditdupes.php',1492953712,NULL),('phabricator:20141118.diffxaction.sql',1492953712,NULL),('phabricator:20141119.commitpedge.sql',1492953712,NULL),('phabricator:20141119.differential.diff.policy.sql',1492953712,NULL),('phabricator:20141119.sshtrust.sql',1492953712,NULL),('phabricator:20141123.taskpriority.1.sql',1492953712,NULL),('phabricator:20141123.taskpriority.2.sql',1492953712,NULL),('phabricator:20141210.maniphestsubscribersmig.1.sql',1492953712,NULL),('phabricator:20141210.maniphestsubscribersmig.2.sql',1492953712,NULL),('phabricator:20141210.reposervice.sql',1492953712,NULL),('phabricator:20141212.conduittoken.sql',1492953712,NULL),('phabricator:20141215.almanacservicetype.sql',1492953712,NULL),('phabricator:20141217.almanacdevicelock.sql',1492953712,NULL),('phabricator:20141217.almanaclock.sql',1492953712,NULL),('phabricator:20141218.maniphestcctxn.php',1492953712,NULL),('phabricator:20141222.maniphestprojtxn.php',1492953712,NULL),('phabricator:20141223.daemonloguser.sql',1492953712,NULL),('phabricator:20141223.daemonobjectphid.sql',1492953712,NULL),('phabricator:20141230.pasteeditpolicycolumn.sql',1492953712,NULL),('phabricator:20141230.pasteeditpolicyexisting.sql',1492953712,NULL),('phabricator:20150102.policyname.php',1492953712,NULL),('phabricator:20150102.tasksubscriber.sql',1492953712,NULL),('phabricator:20150105.conpsearch.sql',1492953712,NULL),('phabricator:20150114.oauthserver.client.policy.sql',1492953713,NULL),('phabricator:20150115.applicationemails.sql',1492953713,NULL),('phabricator:20150115.trigger.1.sql',1492953713,NULL),('phabricator:20150115.trigger.2.sql',1492953713,NULL),('phabricator:20150116.maniphestapplicationemails.php',1492953713,NULL),('phabricator:20150120.maniphestdefaultauthor.php',1492953713,NULL),('phabricator:20150124.subs.1.sql',1492953713,NULL),('phabricator:20150129.pastefileapplicationemails.php',1492953713,NULL),('phabricator:20150130.phortune.1.subphid.sql',1492953713,NULL),('phabricator:20150130.phortune.2.subkey.sql',1492953713,NULL),('phabricator:20150131.phortune.1.defaultpayment.sql',1492953713,NULL),('phabricator:20150205.authprovider.autologin.sql',1492953713,NULL),('phabricator:20150205.daemonenv.sql',1492953713,NULL),('phabricator:20150209.invite.sql',1492953713,NULL),('phabricator:20150209.oauthclient.trust.sql',1492953713,NULL),('phabricator:20150210.invitephid.sql',1492953713,NULL),('phabricator:20150212.legalpad.session.1.sql',1492953713,NULL),('phabricator:20150212.legalpad.session.2.sql',1492953713,NULL),('phabricator:20150219.scratch.nonmutable.sql',1492953713,NULL),('phabricator:20150223.daemon.1.id.sql',1492953713,NULL),('phabricator:20150223.daemon.2.idlegacy.sql',1492953713,NULL),('phabricator:20150223.daemon.3.idkey.sql',1492953713,NULL),('phabricator:20150312.filechunk.1.sql',1492953713,NULL),('phabricator:20150312.filechunk.2.sql',1492953713,NULL),('phabricator:20150312.filechunk.3.sql',1492953713,NULL),('phabricator:20150317.conpherence.isroom.1.sql',1492953713,NULL),('phabricator:20150317.conpherence.isroom.2.sql',1492953713,NULL),('phabricator:20150317.conpherence.policy.sql',1492953713,NULL),('phabricator:20150410.nukeruleedit.sql',1492953713,NULL),('phabricator:20150420.invoice.1.sql',1492953713,NULL),('phabricator:20150420.invoice.2.sql',1492953713,NULL),('phabricator:20150425.isclosed.sql',1492953713,NULL),('phabricator:20150427.calendar.1.edge.sql',1492953713,NULL),('phabricator:20150427.calendar.1.xaction.sql',1492953713,NULL),('phabricator:20150427.calendar.2.xaction.sql',1492953713,NULL),('phabricator:20150428.calendar.1.iscancelled.sql',1492953713,NULL),('phabricator:20150428.calendar.1.name.sql',1492953713,NULL),('phabricator:20150429.calendar.1.invitee.sql',1492953713,NULL),('phabricator:20150430.calendar.1.policies.sql',1492953713,NULL),('phabricator:20150430.multimeter.1.sql',1492953713,NULL),('phabricator:20150430.multimeter.2.host.sql',1492953713,NULL),('phabricator:20150430.multimeter.3.viewer.sql',1492953713,NULL),('phabricator:20150430.multimeter.4.context.sql',1492953713,NULL),('phabricator:20150430.multimeter.5.label.sql',1492953713,NULL),('phabricator:20150501.calendar.1.reply.sql',1492953713,NULL),('phabricator:20150501.calendar.2.reply.php',1492953713,NULL),('phabricator:20150501.conpherencepics.sql',1492953713,NULL),('phabricator:20150503.repositorysymbols.1.sql',1492953713,NULL),('phabricator:20150503.repositorysymbols.2.php',1492953713,NULL),('phabricator:20150503.repositorysymbols.3.sql',1492953713,NULL),('phabricator:20150504.symbolsproject.1.php',1492953713,NULL),('phabricator:20150504.symbolsproject.2.sql',1492953713,NULL),('phabricator:20150506.calendarunnamedevents.1.php',1492953713,NULL),('phabricator:20150507.calendar.1.isallday.sql',1492953713,NULL),('phabricator:20150513.user.cache.1.sql',1492953713,NULL),('phabricator:20150514.calendar.status.sql',1492953713,NULL),('phabricator:20150514.phame.blog.xaction.sql',1492953713,NULL),('phabricator:20150514.user.cache.2.sql',1492953713,NULL),('phabricator:20150515.phame.post.xaction.sql',1492953713,NULL),('phabricator:20150515.project.mailkey.1.sql',1492953713,NULL),('phabricator:20150515.project.mailkey.2.php',1492953713,NULL),('phabricator:20150519.calendar.calendaricon.sql',1492953713,NULL),('phabricator:20150521.releephrepository.sql',1492953713,NULL),('phabricator:20150525.diff.hidden.1.sql',1492953713,NULL),('phabricator:20150526.owners.mailkey.1.sql',1492953713,NULL),('phabricator:20150526.owners.mailkey.2.php',1492953713,NULL),('phabricator:20150526.owners.xaction.sql',1492953713,NULL),('phabricator:20150527.calendar.recurringevents.sql',1492953713,NULL),('phabricator:20150601.spaces.1.namespace.sql',1492953713,NULL),('phabricator:20150601.spaces.2.xaction.sql',1492953714,NULL),('phabricator:20150602.mlist.1.sql',1492953714,NULL),('phabricator:20150602.mlist.2.php',1492953714,NULL),('phabricator:20150604.spaces.1.sql',1492953714,NULL),('phabricator:20150605.diviner.edges.sql',1492953714,NULL),('phabricator:20150605.diviner.editPolicy.sql',1492953714,NULL),('phabricator:20150605.diviner.xaction.sql',1492953714,NULL),('phabricator:20150606.mlist.1.php',1492953714,NULL),('phabricator:20150609.inline.sql',1492953714,NULL),('phabricator:20150609.spaces.1.pholio.sql',1492953714,NULL),('phabricator:20150609.spaces.2.maniphest.sql',1492953714,NULL),('phabricator:20150610.spaces.1.desc.sql',1492953714,NULL),('phabricator:20150610.spaces.2.edge.sql',1492953714,NULL),('phabricator:20150610.spaces.3.archive.sql',1492953714,NULL),('phabricator:20150611.spaces.1.mailxaction.sql',1492953714,NULL),('phabricator:20150611.spaces.2.appmail.sql',1492953714,NULL),('phabricator:20150616.divinerrepository.sql',1492953714,NULL),('phabricator:20150617.harbor.1.lint.sql',1492953714,NULL),('phabricator:20150617.harbor.2.unit.sql',1492953714,NULL),('phabricator:20150618.harbor.1.planauto.sql',1492953714,NULL),('phabricator:20150618.harbor.2.stepauto.sql',1492953714,NULL),('phabricator:20150618.harbor.3.buildauto.sql',1492953714,NULL),('phabricator:20150619.conpherencerooms.1.sql',1492953714,NULL),('phabricator:20150619.conpherencerooms.2.sql',1492953714,NULL),('phabricator:20150619.conpherencerooms.3.sql',1492953714,NULL),('phabricator:20150621.phrase.1.sql',1492953714,NULL),('phabricator:20150621.phrase.2.sql',1492953714,NULL),('phabricator:20150622.bulk.1.job.sql',1492953714,NULL),('phabricator:20150622.bulk.2.task.sql',1492953714,NULL),('phabricator:20150622.bulk.3.xaction.sql',1492953714,NULL),('phabricator:20150622.bulk.4.edge.sql',1492953714,NULL),('phabricator:20150622.metamta.1.phid-col.sql',1492953714,NULL),('phabricator:20150622.metamta.2.phid-mig.php',1492953714,NULL),('phabricator:20150622.metamta.3.phid-key.sql',1492953714,NULL),('phabricator:20150622.metamta.4.actor-phid-col.sql',1492953714,NULL),('phabricator:20150622.metamta.5.actor-phid-mig.php',1492953714,NULL),('phabricator:20150622.metamta.6.actor-phid-key.sql',1492953714,NULL),('phabricator:20150624.spaces.1.repo.sql',1492953714,NULL),('phabricator:20150626.spaces.1.calendar.sql',1492953714,NULL),('phabricator:20150630.herald.1.sql',1492953714,NULL),('phabricator:20150630.herald.2.sql',1492953714,NULL),('phabricator:20150701.herald.1.sql',1492953714,NULL),('phabricator:20150701.herald.2.sql',1492953714,NULL),('phabricator:20150702.spaces.1.slowvote.sql',1492953714,NULL),('phabricator:20150706.herald.1.sql',1492953714,NULL),('phabricator:20150707.herald.1.sql',1492953714,NULL),('phabricator:20150708.arcanistproject.sql',1492953714,NULL),('phabricator:20150708.herald.1.sql',1492953714,NULL),('phabricator:20150708.herald.2.sql',1492953714,NULL),('phabricator:20150708.herald.3.sql',1492953714,NULL),('phabricator:20150712.badges.1.sql',1492953714,NULL),('phabricator:20150714.spaces.countdown.1.sql',1492953714,NULL),('phabricator:20150717.herald.1.sql',1492953714,NULL),('phabricator:20150719.countdown.1.sql',1492953714,NULL),('phabricator:20150719.countdown.2.sql',1492953714,NULL),('phabricator:20150719.countdown.3.sql',1492953714,NULL),('phabricator:20150721.phurl.1.url.sql',1492953714,NULL),('phabricator:20150721.phurl.2.xaction.sql',1492953714,NULL),('phabricator:20150721.phurl.3.xactioncomment.sql',1492953714,NULL),('phabricator:20150721.phurl.4.url.sql',1492953714,NULL),('phabricator:20150721.phurl.5.edge.sql',1492953714,NULL),('phabricator:20150721.phurl.6.alias.sql',1492953714,NULL),('phabricator:20150721.phurl.7.authorphid.sql',1492953714,NULL),('phabricator:20150722.dashboard.1.sql',1492953714,NULL),('phabricator:20150722.dashboard.2.sql',1492953714,NULL),('phabricator:20150723.countdown.1.sql',1492953714,NULL),('phabricator:20150724.badges.comments.1.sql',1492953714,NULL),('phabricator:20150724.countdown.comments.1.sql',1492953714,NULL),('phabricator:20150725.badges.mailkey.1.sql',1492953714,NULL),('phabricator:20150725.badges.mailkey.2.php',1492953714,NULL),('phabricator:20150725.badges.viewpolicy.3.sql',1492953714,NULL),('phabricator:20150725.countdown.mailkey.1.sql',1492953714,NULL),('phabricator:20150725.countdown.mailkey.2.php',1492953714,NULL),('phabricator:20150725.slowvote.mailkey.1.sql',1492953714,NULL),('phabricator:20150725.slowvote.mailkey.2.php',1492953714,NULL),('phabricator:20150727.heraldaction.1.sql',1492953715,NULL),('phabricator:20150730.herald.1.sql',1492953715,NULL),('phabricator:20150730.herald.2.sql',1492953715,NULL),('phabricator:20150730.herald.3.sql',1492953715,NULL),('phabricator:20150730.herald.4.sql',1492953715,NULL),('phabricator:20150730.herald.5.sql',1492953715,NULL),('phabricator:20150730.herald.6.sql',1492953715,NULL),('phabricator:20150730.herald.7.sql',1492953715,NULL),('phabricator:20150803.herald.1.sql',1492953715,NULL),('phabricator:20150803.herald.2.sql',1492953715,NULL),('phabricator:20150804.ponder.answer.mailkey.1.sql',1492953715,NULL),('phabricator:20150804.ponder.answer.mailkey.2.php',1492953715,NULL),('phabricator:20150804.ponder.question.1.sql',1492953715,NULL),('phabricator:20150804.ponder.question.2.sql',1492953715,NULL),('phabricator:20150804.ponder.question.3.sql',1492953715,NULL),('phabricator:20150804.ponder.spaces.4.sql',1492953715,NULL),('phabricator:20150805.paste.status.1.sql',1492953715,NULL),('phabricator:20150805.paste.status.2.sql',1492953715,NULL),('phabricator:20150806.ponder.answer.1.sql',1492953715,NULL),('phabricator:20150806.ponder.editpolicy.2.sql',1492953715,NULL),('phabricator:20150806.ponder.status.1.sql',1492953715,NULL),('phabricator:20150806.ponder.status.2.sql',1492953715,NULL),('phabricator:20150806.ponder.status.3.sql',1492953715,NULL),('phabricator:20150808.ponder.vote.1.sql',1492953715,NULL),('phabricator:20150808.ponder.vote.2.sql',1492953715,NULL),('phabricator:20150812.ponder.answer.1.sql',1492953715,NULL),('phabricator:20150812.ponder.answer.2.sql',1492953715,NULL),('phabricator:20150814.harbormater.artifact.phid.sql',1492953715,NULL),('phabricator:20150815.owners.status.1.sql',1492953715,NULL),('phabricator:20150815.owners.status.2.sql',1492953715,NULL),('phabricator:20150823.nuance.queue.1.sql',1492953715,NULL),('phabricator:20150823.nuance.queue.2.sql',1492953715,NULL),('phabricator:20150823.nuance.queue.3.sql',1492953715,NULL),('phabricator:20150823.nuance.queue.4.sql',1492953715,NULL),('phabricator:20150828.ponder.wiki.1.sql',1492953715,NULL),('phabricator:20150829.ponder.dupe.1.sql',1492953715,NULL),('phabricator:20150904.herald.1.sql',1492953715,NULL),('phabricator:20150906.mailinglist.sql',1492953715,NULL),('phabricator:20150910.owners.custom.1.sql',1492953715,NULL),('phabricator:20150916.drydock.slotlocks.1.sql',1492953715,NULL),('phabricator:20150922.drydock.commands.1.sql',1492953715,NULL),('phabricator:20150923.drydock.resourceid.1.sql',1492953715,NULL),('phabricator:20150923.drydock.resourceid.2.sql',1492953715,NULL),('phabricator:20150923.drydock.resourceid.3.sql',1492953715,NULL),('phabricator:20150923.drydock.taskid.1.sql',1492953715,NULL),('phabricator:20150924.drydock.disable.1.sql',1492953715,NULL),('phabricator:20150924.drydock.status.1.sql',1492953715,NULL),('phabricator:20150928.drydock.rexpire.1.sql',1492953715,NULL),('phabricator:20150930.drydock.log.1.sql',1492953715,NULL),('phabricator:20151001.drydock.rname.1.sql',1492953715,NULL),('phabricator:20151002.dashboard.status.1.sql',1492953715,NULL),('phabricator:20151002.harbormaster.bparam.1.sql',1492953715,NULL),('phabricator:20151009.drydock.auth.1.sql',1492953715,NULL),('phabricator:20151010.drydock.auth.2.sql',1492953715,NULL),('phabricator:20151013.drydock.op.1.sql',1492953715,NULL),('phabricator:20151023.harborpolicy.1.sql',1492953715,NULL),('phabricator:20151023.harborpolicy.2.php',1492953715,NULL),('phabricator:20151023.patchduration.sql',1492953715,13609),('phabricator:20151030.harbormaster.initiator.sql',1492953715,29433),('phabricator:20151106.editengine.1.table.sql',1492953715,8624),('phabricator:20151106.editengine.2.xactions.sql',1492953715,6593),('phabricator:20151106.phame.post.mailkey.1.sql',1492953715,19247),('phabricator:20151106.phame.post.mailkey.2.php',1492953715,1219),('phabricator:20151107.phame.blog.mailkey.1.sql',1492953715,37986),('phabricator:20151107.phame.blog.mailkey.2.php',1492953715,704),('phabricator:20151108.phame.blog.joinpolicy.sql',1492953715,44574),('phabricator:20151108.xhpast.stderr.sql',1492953715,43870),('phabricator:20151109.phame.post.comments.1.sql',1492953716,7807),('phabricator:20151109.repository.coverage.1.sql',1492953716,943),('phabricator:20151109.xhpast.db.1.sql',1492953716,1093),('phabricator:20151109.xhpast.db.2.sql',1492953716,490),('phabricator:20151110.daemonenvhash.sql',1492953716,34291),('phabricator:20151111.phame.blog.archive.1.sql',1492953716,17601),('phabricator:20151111.phame.blog.archive.2.sql',1492953716,398),('phabricator:20151112.herald.edge.sql',1492953716,15285),('phabricator:20151116.owners.edge.sql',1492953716,13252),('phabricator:20151128.phame.blog.picture.1.sql',1492953716,18001),('phabricator:20151130.phurl.mailkey.1.sql',1492953716,11335),('phabricator:20151130.phurl.mailkey.2.php',1492953716,992),('phabricator:20151202.versioneddraft.1.sql',1492953716,7153),('phabricator:20151207.editengine.1.sql',1492953716,72200),('phabricator:20151210.land.1.refphid.sql',1492953716,13730),('phabricator:20151210.land.2.refphid.php',1492953716,629),('phabricator:20151215.phame.1.autotitle.sql',1492953716,19593),('phabricator:20151218.key.1.keyphid.sql',1492953716,14029),('phabricator:20151218.key.2.keyphid.php',1492953716,375),('phabricator:20151219.proj.01.prislug.sql',1492953716,21886),('phabricator:20151219.proj.02.prislugkey.sql',1492953716,12589),('phabricator:20151219.proj.03.copyslug.sql',1492953716,388),('phabricator:20151219.proj.04.dropslugkey.sql',1492953716,6623),('phabricator:20151219.proj.05.dropslug.sql',1492953716,19905),('phabricator:20151219.proj.06.defaultpolicy.php',1492953716,795),('phabricator:20151219.proj.07.viewnull.sql',1492953716,17884),('phabricator:20151219.proj.08.editnull.sql',1492953716,10628),('phabricator:20151219.proj.09.joinnull.sql',1492953716,9450),('phabricator:20151219.proj.10.subcolumns.sql',1492953716,141357),('phabricator:20151219.proj.11.subprojectphids.sql',1492953716,22236),('phabricator:20151221.search.1.version.sql',1492953716,10587),('phabricator:20151221.search.2.ownersngrams.sql',1492953716,7323),('phabricator:20151221.search.3.reindex.php',1492953716,310),('phabricator:20151223.proj.01.paths.sql',1492953716,21893),('phabricator:20151223.proj.02.depths.sql',1492953716,28023),('phabricator:20151223.proj.03.pathkey.sql',1492953716,13779),('phabricator:20151223.proj.04.keycol.sql',1492953716,29651),('phabricator:20151223.proj.05.updatekeys.php',1492953716,375),('phabricator:20151223.proj.06.uniq.sql',1492953716,11845),('phabricator:20151226.reop.1.sql',1492953716,17667),('phabricator:20151227.proj.01.materialize.sql',1492953716,422),('phabricator:20151231.proj.01.icon.php',1492953716,1539),('phabricator:20160102.badges.award.sql',1492953716,8429),('phabricator:20160110.repo.01.slug.sql',1492953716,36030),('phabricator:20160110.repo.02.slug.php',1492953716,407),('phabricator:20160111.repo.01.slugx.sql',1492953716,639),('phabricator:20160112.repo.01.uri.sql',1492953716,9469),('phabricator:20160112.repo.02.uri.index.php',1492953716,80),('phabricator:20160113.propanel.1.storage.sql',1492953716,6940),('phabricator:20160113.propanel.2.xaction.sql',1492953716,7108),('phabricator:20160119.project.1.silence.sql',1492953716,457),('phabricator:20160122.project.1.boarddefault.php',1492953716,755),('phabricator:20160124.people.1.icon.sql',1492953716,12766),('phabricator:20160124.people.2.icondefault.sql',1492953716,351),('phabricator:20160128.repo.1.pull.sql',1492953716,9469),('phabricator:20160201.revision.properties.1.sql',1492953716,17863),('phabricator:20160201.revision.properties.2.sql',1492953716,370),('phabricator:20160202.board.1.proxy.sql',1492953716,18324),('phabricator:20160202.ipv6.1.sql',1492953716,18661),('phabricator:20160202.ipv6.2.php',1492953716,1141),('phabricator:20160206.cover.1.sql',1492953716,40105),('phabricator:20160208.task.1.sql',1492953716,35042),('phabricator:20160208.task.2.sql',1492953716,32770),('phabricator:20160208.task.3.sql',1492953716,34137),('phabricator:20160212.proj.1.sql',1492953717,29561),('phabricator:20160212.proj.2.sql',1492953717,314),('phabricator:20160215.owners.policy.1.sql',1492953717,18003),('phabricator:20160215.owners.policy.2.sql',1492953717,17598),('phabricator:20160215.owners.policy.3.sql',1492953717,387),('phabricator:20160215.owners.policy.4.sql',1492953717,291),('phabricator:20160218.callsigns.1.sql',1492953717,10721),('phabricator:20160221.almanac.1.devicen.sql',1492953717,8045),('phabricator:20160221.almanac.2.devicei.php',1492953717,965),('phabricator:20160221.almanac.3.servicen.sql',1492953717,5846),('phabricator:20160221.almanac.4.servicei.php',1492953717,510),('phabricator:20160221.almanac.5.networkn.sql',1492953717,6516),('phabricator:20160221.almanac.6.networki.php',1492953717,813),('phabricator:20160221.almanac.7.namespacen.sql',1492953717,6664),('phabricator:20160221.almanac.8.namespace.sql',1492953717,7358),('phabricator:20160221.almanac.9.namespacex.sql',1492953717,7375),('phabricator:20160222.almanac.1.properties.php',1492953717,1075),('phabricator:20160223.almanac.1.bound.sql',1492953717,15258),('phabricator:20160223.almanac.2.lockbind.sql',1492953717,363),('phabricator:20160223.almanac.3.devicelock.sql',1492953717,28139),('phabricator:20160223.almanac.4.servicelock.sql',1492953717,24328),('phabricator:20160223.paste.fileedges.php',1492953717,552),('phabricator:20160225.almanac.1.disablebinding.sql',1492953717,20577),('phabricator:20160225.almanac.2.stype.sql',1492953717,6572),('phabricator:20160225.almanac.3.stype.php',1492953717,402),('phabricator:20160227.harbormaster.1.plann.sql',1492953717,8121),('phabricator:20160227.harbormaster.2.plani.php',1492953717,346),('phabricator:20160303.drydock.1.bluen.sql',1492953717,7287),('phabricator:20160303.drydock.2.bluei.php',1492953717,355),('phabricator:20160303.drydock.3.edge.sql',1492953717,13334),('phabricator:20160308.nuance.01.disabled.sql',1492953717,16961),('phabricator:20160308.nuance.02.cursordata.sql',1492953717,7361),('phabricator:20160308.nuance.03.sourcen.sql',1492953717,6397),('phabricator:20160308.nuance.04.sourcei.php',1492953717,1144),('phabricator:20160308.nuance.05.sourcename.sql',1492953717,11455),('phabricator:20160308.nuance.06.label.sql',1492953717,18960),('phabricator:20160308.nuance.07.itemtype.sql',1492953717,22009),('phabricator:20160308.nuance.08.itemkey.sql',1492953717,21836),('phabricator:20160308.nuance.09.itemcontainer.sql',1492953717,21988),('phabricator:20160308.nuance.10.itemkeyu.sql',1492953717,366),('phabricator:20160308.nuance.11.requestor.sql',1492953717,11681),('phabricator:20160308.nuance.12.queue.sql',1492953717,22125),('phabricator:20160316.lfs.01.token.resource.sql',1492953717,19283),('phabricator:20160316.lfs.02.token.user.sql',1492953717,16100),('phabricator:20160316.lfs.03.token.properties.sql',1492953717,16663),('phabricator:20160316.lfs.04.token.default.sql',1492953717,369),('phabricator:20160317.lfs.01.ref.sql',1492953717,6665),('phabricator:20160321.nuance.01.taskbridge.sql',1492953717,29611),('phabricator:20160322.nuance.01.itemcommand.sql',1492953717,8177),('phabricator:20160323.badgemigrate.sql',1492953717,884),('phabricator:20160329.nuance.01.requestor.sql',1492953717,1317),('phabricator:20160329.nuance.02.requestorsource.sql',1492953717,1457),('phabricator:20160329.nuance.03.requestorxaction.sql',1492953717,1284),('phabricator:20160329.nuance.04.requestorcomment.sql',1492953717,1283),('phabricator:20160330.badges.migratequality.sql',1492953717,11262),('phabricator:20160330.badges.qualityxaction.mig.sql',1492953717,1541),('phabricator:20160331.fund.comments.1.sql',1492953717,6270),('phabricator:20160404.oauth.1.xaction.sql',1492953717,5694),('phabricator:20160405.oauth.2.disable.sql',1492953717,13715),('phabricator:20160406.badges.ngrams.php',1492953717,526),('phabricator:20160406.badges.ngrams.sql',1492953717,11583),('phabricator:20160406.columns.1.php',1492953717,524),('phabricator:20160411.repo.1.version.sql',1492953717,5926),('phabricator:20160418.repouri.1.sql',1492953717,5583),('phabricator:20160418.repouri.2.sql',1492953717,10524),('phabricator:20160418.repoversion.1.sql',1492953717,13780),('phabricator:20160419.pushlog.1.sql',1492953717,25781),('phabricator:20160424.locks.1.sql',1492953717,14645),('phabricator:20160426.searchedge.sql',1492953717,13370),('phabricator:20160428.repo.1.urixaction.sql',1492953717,7961),('phabricator:20160503.repo.01.lpath.sql',1492953717,62415),('phabricator:20160503.repo.02.lpathkey.sql',1492953717,25518),('phabricator:20160503.repo.03.lpathmigrate.php',1492953717,556),('phabricator:20160503.repo.04.mirrormigrate.php',1492953717,493),('phabricator:20160503.repo.05.urimigrate.php',1492953717,418),('phabricator:20160510.repo.01.uriindex.php',1492953717,4833),('phabricator:20160513.owners.01.autoreview.sql',1492953717,32054),('phabricator:20160513.owners.02.autoreviewnone.sql',1492953717,499),('phabricator:20160516.owners.01.dominion.sql',1492953717,14616),('phabricator:20160516.owners.02.dominionstrong.sql',1492953717,323),('phabricator:20160517.oauth.01.edge.sql',1492953717,11629),('phabricator:20160518.ssh.01.activecol.sql',1492953717,13262),('phabricator:20160518.ssh.02.activeval.sql',1492953717,282),('phabricator:20160518.ssh.03.activekey.sql',1492953717,21706),('phabricator:20160519.ssh.01.xaction.sql',1492953717,8147),('phabricator:20160531.pref.01.xaction.sql',1492953717,6483),('phabricator:20160531.pref.02.datecreatecol.sql',1492953717,12856),('phabricator:20160531.pref.03.datemodcol.sql',1492953717,14408),('phabricator:20160531.pref.04.datecreateval.sql',1492953717,367),('phabricator:20160531.pref.05.datemodval.sql',1492953717,298),('phabricator:20160531.pref.06.phidcol.sql',1492953717,16950),('phabricator:20160531.pref.07.phidval.php',1492953717,603),('phabricator:20160601.user.01.cache.sql',1492953717,8935),('phabricator:20160601.user.02.copyprefs.php',1492953717,1423),('phabricator:20160601.user.03.removetime.sql',1492953718,20344),('phabricator:20160601.user.04.removetranslation.sql',1492953718,21336),('phabricator:20160601.user.05.removesex.sql',1492953718,23471),('phabricator:20160603.user.01.removedcenabled.sql',1492953718,20090),('phabricator:20160603.user.02.removedctab.sql',1492953718,19685),('phabricator:20160603.user.03.removedcvisible.sql',1492953718,20696),('phabricator:20160604.user.01.stringmailprefs.php',1492953718,457),('phabricator:20160604.user.02.removeimagecache.sql',1492953718,19842),('phabricator:20160605.user.01.prefnulluser.sql',1492953718,12045),('phabricator:20160605.user.02.prefbuiltin.sql',1492953718,12871),('phabricator:20160605.user.03.builtinunique.sql',1492953718,10637),('phabricator:20160616.phame.blog.header.1.sql',1492953718,15672),('phabricator:20160616.repo.01.oldref.sql',1492953718,6173),('phabricator:20160617.harbormaster.01.arelease.sql',1492953718,15915),('phabricator:20160618.phame.blog.subtitle.sql',1492953718,15243),('phabricator:20160620.phame.blog.parentdomain.2.sql',1492953718,15398),('phabricator:20160620.phame.blog.parentsite.1.sql',1492953718,16059),('phabricator:20160623.phame.blog.fulldomain.1.sql',1492953718,16216),('phabricator:20160623.phame.blog.fulldomain.2.sql',1492953718,383),('phabricator:20160623.phame.blog.fulldomain.3.sql',1492953718,427),('phabricator:20160706.phame.blog.parentdomain.2.sql',1492953718,17416),('phabricator:20160706.phame.blog.parentsite.1.sql',1492953718,15821),('phabricator:20160707.calendar.01.stub.sql',1492953718,15805),('phabricator:20160711.files.01.builtin.sql',1492953718,23541),('phabricator:20160711.files.02.builtinkey.sql',1492953718,11421),('phabricator:20160713.event.01.host.sql',1492953718,11510),('phabricator:20160715.event.01.alldayfrom.sql',1492953718,17347),('phabricator:20160715.event.02.alldayto.sql',1492953718,16771),('phabricator:20160715.event.03.allday.php',1492953718,65),('phabricator:20160720.calendar.invitetxn.php',1492953718,1008),('phabricator:20160721.pack.01.pub.sql',1492953718,11271),('phabricator:20160721.pack.02.pubxaction.sql',1492953718,7364),('phabricator:20160721.pack.03.edge.sql',1492953718,13426),('phabricator:20160721.pack.04.pkg.sql',1492953718,7126),('phabricator:20160721.pack.05.pkgxaction.sql',1492953718,6996),('phabricator:20160721.pack.06.version.sql',1492953718,7508),('phabricator:20160721.pack.07.versionxaction.sql',1492953718,7013),('phabricator:20160722.pack.01.pubngrams.sql',1492953718,6915),('phabricator:20160722.pack.02.pkgngrams.sql',1492953718,7627),('phabricator:20160722.pack.03.versionngrams.sql',1492953718,7239),('phabricator:20160810.commit.01.summarylength.sql',1492953718,11762),('phabricator:20160824.connectionlog.sql',1492953718,1222),('phabricator:20160824.repohint.01.hint.sql',1492953718,6193),('phabricator:20160824.repohint.02.movebad.php',1492953718,459),('phabricator:20160824.repohint.03.nukebad.sql',1492953718,1167),('phabricator:20160825.ponder.sql',1492953718,719),('phabricator:20160829.pastebin.01.language.sql',1492953718,10809),('phabricator:20160829.pastebin.02.language.sql',1492953718,514),('phabricator:20160913.conpherence.topic.1.sql',1492953718,11994),('phabricator:20160919.repo.messagecount.sql',1492953718,13142),('phabricator:20160919.repo.messagedefault.sql',1492953718,7514),('phabricator:20160921.fileexternalrequest.sql',1492953718,6953),('phabricator:20160927.phurl.ngrams.php',1492953718,375),('phabricator:20160927.phurl.ngrams.sql',1492953718,7421),('phabricator:20160928.repo.messagecount.sql',1492953718,381),('phabricator:20160928.tokentoken.sql',1492953718,6865),('phabricator:20161003.cal.01.utcepoch.sql',1492953718,55561),('phabricator:20161003.cal.02.parameters.sql',1492953718,16511),('phabricator:20161004.cal.01.noepoch.php',1492953718,1626),('phabricator:20161005.cal.01.rrules.php',1492953718,276),('phabricator:20161005.cal.02.export.sql',1492953718,9626),('phabricator:20161005.cal.03.exportxaction.sql',1492953718,7148),('phabricator:20161005.conpherence.image.1.sql',1492953718,12044),('phabricator:20161005.conpherence.image.2.php',1492953718,340),('phabricator:20161011.conpherence.ngrams.php',1492953718,313),('phabricator:20161011.conpherence.ngrams.sql',1492953718,9940),('phabricator:20161012.cal.01.import.sql',1492953718,7387),('phabricator:20161012.cal.02.importxaction.sql',1492953718,6560),('phabricator:20161012.cal.03.eventimport.sql',1492953718,64748),('phabricator:20161013.cal.01.importlog.sql',1492953718,6363),('phabricator:20161016.conpherence.imagephids.sql',1492953718,11462),('phabricator:20161025.phortune.contact.1.sql',1492953718,13783),('phabricator:20161025.phortune.merchant.image.1.sql',1492953718,12905),('phabricator:20161026.calendar.01.importtriggers.sql',1492953718,29953),('phabricator:20161027.calendar.01.externalinvitee.sql',1492953718,7485),('phabricator:20161029.phortune.invoice.1.sql',1492953718,36760),('phabricator:20161031.calendar.01.seriesparent.sql',1492953718,18327),('phabricator:20161031.calendar.02.notifylog.sql',1492953718,8078),('phabricator:20161101.calendar.01.noholiday.sql',1492953718,1286),('phabricator:20161101.calendar.02.removecolumns.sql',1492953719,93220),('phabricator:20161104.calendar.01.availability.sql',1492953719,16257),('phabricator:20161104.calendar.02.availdefault.sql',1492953719,430),('phabricator:20161115.phamepost.01.subtitle.sql',1492953719,17588),('phabricator:20161115.phamepost.02.header.sql',1492953719,16388),('phabricator:20161121.cluster.01.hoststate.sql',1492953719,8311),('phabricator:20161124.search.01.stopwords.sql',1492953719,7121),('phabricator:20161125.search.01.stemmed.sql',1492953719,6287),('phabricator:20161130.search.01.manual.sql',1492953719,6232),('phabricator:20161130.search.02.rebuild.php',1492953719,2751),('phabricator:20161210.dashboards.01.author.sql',1492953719,12555),('phabricator:20161210.dashboards.02.author.php',1492953719,746),('phabricator:20161211.menu.01.itemkey.sql',1492953719,8205),('phabricator:20161211.menu.02.itemprops.sql',1492953719,6574),('phabricator:20161211.menu.03.order.sql',1492953719,5930),('phabricator:20161212.dashboardpanel.01.author.sql',1492953719,11841),('phabricator:20161212.dashboardpanel.02.author.php',1492953719,730),('phabricator:20161212.dashboards.01.icon.sql',1492953719,14194),('phabricator:20161213.diff.01.hunks.php',1492953719,542),('phabricator:20161216.dashboard.ngram.01.sql',1492953719,15640),('phabricator:20161216.dashboard.ngram.02.php',1492953719,675),('phabricator:20170106.menu.01.customphd.sql',1492953719,12003),('phabricator:20170109.diff.01.commit.sql',1492953719,16340),('phabricator:20170119.menuitem.motivator.01.php',1492953719,219),('phabricator:20170131.dashboard.personal.01.php',1492953719,672),('phabricator:20170301.subtype.01.col.sql',1492953719,16642),('phabricator:20170301.subtype.02.default.sql',1492953719,394),('phabricator:20170301.subtype.03.taskcol.sql',1492953719,28706),('phabricator:20170301.subtype.04.taskdefault.sql',1492953719,375),('phabricator:20170303.people.01.avatar.sql',1492953719,50756),('phabricator:20170313.reviewers.01.sql',1492953719,9787),('phabricator:20170316.rawfiles.01.php',1492953719,993),('phabricator:20170320.reviewers.01.lastaction.sql',1492953719,13463),('phabricator:20170320.reviewers.02.lastcomment.sql',1492953719,16623),('phabricator:20170320.reviewers.03.migrate.php',1492953719,787),('phabricator:20170322.reviewers.04.actor.sql',1492953719,19471),('phabricator:20170328.reviewers.01.void.sql',1492953719,15326),('phabricator:20170406.hmac.01.keystore.sql',1492953719,7476),('phabricator:20170410.calendar.01.repair.php',1492953719,445),('phabricator:20170412.conpherence.01.picturecrop.sql',1492953719,287),('phabricator:20170413.conpherence.01.recentparty.sql',1492953719,11813),('phabricator:20170417.files.ngrams.sql',1492953719,9145),('phabricator:20170418.1.application.01.xaction.sql',1492953719,6782),('phabricator:20170418.1.application.02.edge.sql',1492953719,12783),('phabricator:20170418.files.isDeleted.sql',1492953719,26882),('phabricator:20170419.app.01.table.sql',1492953719,9433),('phabricator:20170419.thread.01.behind.sql',1492953719,17501),('phabricator:20170419.thread.02.status.sql',1492953719,18503),('phabricator:20170419.thread.03.touched.sql',1492953719,20247),('phabricator:daemonstatus.sql',1492953704,NULL),('phabricator:daemonstatuskey.sql',1492953704,NULL),('phabricator:daemontaskarchive.sql',1492953705,NULL),('phabricator:db.almanac',1492953699,NULL),('phabricator:db.application',1492953699,NULL),('phabricator:db.audit',1492953699,NULL),('phabricator:db.auth',1492953699,NULL),('phabricator:db.badges',1492953699,NULL),('phabricator:db.cache',1492953699,NULL),('phabricator:db.calendar',1492953699,NULL),('phabricator:db.chatlog',1492953699,NULL),('phabricator:db.conduit',1492953699,NULL),('phabricator:db.config',1492953699,NULL),('phabricator:db.conpherence',1492953699,NULL),('phabricator:db.countdown',1492953699,NULL),('phabricator:db.daemon',1492953699,NULL),('phabricator:db.dashboard',1492953699,NULL),('phabricator:db.differential',1492953699,NULL),('phabricator:db.diviner',1492953699,NULL),('phabricator:db.doorkeeper',1492953699,NULL),('phabricator:db.draft',1492953699,NULL),('phabricator:db.drydock',1492953699,NULL),('phabricator:db.fact',1492953699,NULL),('phabricator:db.feed',1492953699,NULL),('phabricator:db.file',1492953699,NULL),('phabricator:db.flag',1492953699,NULL),('phabricator:db.fund',1492953699,NULL),('phabricator:db.harbormaster',1492953699,NULL),('phabricator:db.herald',1492953699,NULL),('phabricator:db.legalpad',1492953699,NULL),('phabricator:db.maniphest',1492953699,NULL),('phabricator:db.meta_data',1492953699,NULL),('phabricator:db.metamta',1492953699,NULL),('phabricator:db.multimeter',1492953699,NULL),('phabricator:db.nuance',1492953699,NULL),('phabricator:db.oauth_server',1492953699,NULL),('phabricator:db.owners',1492953699,NULL),('phabricator:db.packages',1492953699,NULL),('phabricator:db.passphrase',1492953699,NULL),('phabricator:db.pastebin',1492953699,NULL),('phabricator:db.phame',1492953699,NULL),('phabricator:db.phlux',1492953699,NULL),('phabricator:db.pholio',1492953699,NULL),('phabricator:db.phortune',1492953699,NULL),('phabricator:db.phragment',1492953699,NULL),('phabricator:db.phrequent',1492953699,NULL),('phabricator:db.phriction',1492953699,NULL),('phabricator:db.phurl',1492953699,NULL),('phabricator:db.policy',1492953699,NULL),('phabricator:db.ponder',1492953699,NULL),('phabricator:db.project',1492953699,NULL),('phabricator:db.releeph',1492953699,NULL),('phabricator:db.repository',1492953699,NULL),('phabricator:db.search',1492953699,NULL),('phabricator:db.slowvote',1492953699,NULL),('phabricator:db.spaces',1492953699,NULL),('phabricator:db.system',1492953699,NULL),('phabricator:db.timeline',1492953699,NULL),('phabricator:db.token',1492953699,NULL),('phabricator:db.user',1492953699,NULL),('phabricator:db.worker',1492953699,NULL),('phabricator:db.xhpast',1492953699,NULL),('phabricator:db.xhpastview',1492953699,NULL),('phabricator:db.xhprof',1492953699,NULL),('phabricator:differentialbookmarks.sql',1492953704,NULL),('phabricator:draft-metadata.sql',1492953704,NULL),('phabricator:dropfileproxyimage.sql',1492953705,NULL),('phabricator:drydockresoucetype.sql',1492953705,NULL),('phabricator:drydocktaskid.sql',1492953705,NULL),('phabricator:edgetype.sql',1492953704,NULL),('phabricator:emailtable.sql',1492953704,NULL),('phabricator:emailtableport.sql',1492953704,NULL),('phabricator:emailtableremove.sql',1492953704,NULL),('phabricator:fact-raw.sql',1492953704,NULL),('phabricator:harbormasterobject.sql',1492953704,NULL),('phabricator:holidays.sql',1492953704,NULL),('phabricator:ldapinfo.sql',1492953704,NULL),('phabricator:legalpad-mailkey-populate.php',1492953706,NULL),('phabricator:legalpad-mailkey.sql',1492953706,NULL),('phabricator:liskcounters-task.sql',1492953705,NULL),('phabricator:liskcounters.php',1492953705,NULL),('phabricator:liskcounters.sql',1492953705,NULL),('phabricator:maniphestxcache.sql',1492953704,NULL),('phabricator:markupcache.sql',1492953704,NULL),('phabricator:migrate-differential-dependencies.php',1492953704,NULL),('phabricator:migrate-maniphest-dependencies.php',1492953704,NULL),('phabricator:migrate-maniphest-revisions.php',1492953704,NULL),('phabricator:migrate-project-edges.php',1492953704,NULL),('phabricator:owners-exclude.sql',1492953705,NULL),('phabricator:pastepolicy.sql',1492953704,NULL),('phabricator:phameblog.sql',1492953704,NULL),('phabricator:phamedomain.sql',1492953704,NULL),('phabricator:phameoneblog.sql',1492953705,NULL),('phabricator:phamepolicy.sql',1492953704,NULL),('phabricator:phiddrop.sql',1492953704,NULL),('phabricator:pholio.sql',1492953705,NULL),('phabricator:policy-project.sql',1492953704,NULL),('phabricator:ponder-comments.sql',1492953704,NULL),('phabricator:ponder-mailkey-populate.php',1492953704,NULL),('phabricator:ponder-mailkey.sql',1492953704,NULL),('phabricator:ponder.sql',1492953704,NULL),('phabricator:releeph.sql',1492953705,NULL),('phabricator:repository-lint.sql',1492953705,NULL),('phabricator:statustxt.sql',1492953705,NULL),('phabricator:symbolcontexts.sql',1492953704,NULL),('phabricator:testdatabase.sql',1492953704,NULL),('phabricator:threadtopic.sql',1492953704,NULL),('phabricator:userstatus.sql',1492953704,NULL),('phabricator:usertranslation.sql',1492953704,NULL),('phabricator:xhprof.sql',1492953704,NULL); +INSERT INTO `patch_status` VALUES ('phabricator:000.project.sql',1505229294,NULL),('phabricator:0000.legacy.sql',1505229294,NULL),('phabricator:001.maniphest_projects.sql',1505229294,NULL),('phabricator:002.oauth.sql',1505229294,NULL),('phabricator:003.more_oauth.sql',1505229294,NULL),('phabricator:004.daemonrepos.sql',1505229294,NULL),('phabricator:005.workers.sql',1505229294,NULL),('phabricator:006.repository.sql',1505229295,NULL),('phabricator:007.daemonlog.sql',1505229295,NULL),('phabricator:008.repoopt.sql',1505229295,NULL),('phabricator:009.repo_summary.sql',1505229295,NULL),('phabricator:010.herald.sql',1505229295,NULL),('phabricator:011.badcommit.sql',1505229295,NULL),('phabricator:012.dropphidtype.sql',1505229295,NULL),('phabricator:013.commitdetail.sql',1505229295,NULL),('phabricator:014.shortcuts.sql',1505229295,NULL),('phabricator:015.preferences.sql',1505229295,NULL),('phabricator:016.userrealnameindex.sql',1505229295,NULL),('phabricator:017.sessionkeys.sql',1505229295,NULL),('phabricator:018.owners.sql',1505229295,NULL),('phabricator:019.arcprojects.sql',1505229295,NULL),('phabricator:020.pathcapital.sql',1505229295,NULL),('phabricator:021.xhpastview.sql',1505229295,NULL),('phabricator:022.differentialcommit.sql',1505229295,NULL),('phabricator:023.dxkeys.sql',1505229295,NULL),('phabricator:024.mlistkeys.sql',1505229295,NULL),('phabricator:025.commentopt.sql',1505229295,NULL),('phabricator:026.diffpropkey.sql',1505229295,NULL),('phabricator:027.metamtakeys.sql',1505229295,NULL),('phabricator:028.systemagent.sql',1505229295,NULL),('phabricator:029.cursors.sql',1505229295,NULL),('phabricator:030.imagemacro.sql',1505229295,NULL),('phabricator:031.workerrace.sql',1505229295,NULL),('phabricator:032.viewtime.sql',1505229295,NULL),('phabricator:033.privtest.sql',1505229295,NULL),('phabricator:034.savedheader.sql',1505229295,NULL),('phabricator:035.proxyimage.sql',1505229295,NULL),('phabricator:036.mailkey.sql',1505229295,NULL),('phabricator:037.setuptest.sql',1505229295,NULL),('phabricator:038.admin.sql',1505229295,NULL),('phabricator:039.userlog.sql',1505229295,NULL),('phabricator:040.transform.sql',1505229295,NULL),('phabricator:041.heraldrepetition.sql',1505229295,NULL),('phabricator:042.commentmetadata.sql',1505229295,NULL),('phabricator:043.pastebin.sql',1505229295,NULL),('phabricator:044.countdown.sql',1505229295,NULL),('phabricator:045.timezone.sql',1505229295,NULL),('phabricator:046.conduittoken.sql',1505229295,NULL),('phabricator:047.projectstatus.sql',1505229295,NULL),('phabricator:048.relationshipkeys.sql',1505229296,NULL),('phabricator:049.projectowner.sql',1505229296,NULL),('phabricator:050.taskdenormal.sql',1505229296,NULL),('phabricator:051.projectfilter.sql',1505229296,NULL),('phabricator:052.pastelanguage.sql',1505229296,NULL),('phabricator:053.feed.sql',1505229296,NULL),('phabricator:054.subscribers.sql',1505229296,NULL),('phabricator:055.add_author_to_files.sql',1505229296,NULL),('phabricator:056.slowvote.sql',1505229296,NULL),('phabricator:057.parsecache.sql',1505229296,NULL),('phabricator:058.missingkeys.sql',1505229296,NULL),('phabricator:059.engines.php',1505229296,NULL),('phabricator:060.phriction.sql',1505229296,NULL),('phabricator:061.phrictioncontent.sql',1505229296,NULL),('phabricator:062.phrictionmenu.sql',1505229296,NULL),('phabricator:063.pasteforks.sql',1505229296,NULL),('phabricator:064.subprojects.sql',1505229296,NULL),('phabricator:065.sshkeys.sql',1505229296,NULL),('phabricator:066.phrictioncontent.sql',1505229296,NULL),('phabricator:067.preferences.sql',1505229296,NULL),('phabricator:068.maniphestauxiliarystorage.sql',1505229296,NULL),('phabricator:069.heraldxscript.sql',1505229296,NULL),('phabricator:070.differentialaux.sql',1505229296,NULL),('phabricator:071.contentsource.sql',1505229296,NULL),('phabricator:072.blamerevert.sql',1505229296,NULL),('phabricator:073.reposymbols.sql',1505229296,NULL),('phabricator:074.affectedpath.sql',1505229296,NULL),('phabricator:075.revisionhash.sql',1505229296,NULL),('phabricator:076.indexedlanguages.sql',1505229296,NULL),('phabricator:077.originalemail.sql',1505229296,NULL),('phabricator:078.nametoken.sql',1505229296,NULL),('phabricator:079.nametokenindex.php',1505229296,NULL),('phabricator:080.filekeys.sql',1505229296,NULL),('phabricator:081.filekeys.php',1505229296,NULL),('phabricator:082.xactionkey.sql',1505229296,NULL),('phabricator:083.dxviewtime.sql',1505229296,NULL),('phabricator:084.pasteauthorkey.sql',1505229296,NULL),('phabricator:085.packagecommitrelationship.sql',1505229296,NULL),('phabricator:086.formeraffil.sql',1505229296,NULL),('phabricator:087.phrictiondelete.sql',1505229296,NULL),('phabricator:088.audit.sql',1505229296,NULL),('phabricator:089.projectwiki.sql',1505229296,NULL),('phabricator:090.forceuniqueprojectnames.php',1505229296,NULL),('phabricator:091.uniqueslugkey.sql',1505229296,NULL),('phabricator:092.dropgithubnotification.sql',1505229296,NULL),('phabricator:093.gitremotes.php',1505229296,NULL),('phabricator:094.phrictioncolumn.sql',1505229296,NULL),('phabricator:095.directory.sql',1505229296,NULL),('phabricator:096.filename.sql',1505229296,NULL),('phabricator:097.heraldruletypes.sql',1505229297,NULL),('phabricator:098.heraldruletypemigration.php',1505229297,NULL),('phabricator:099.drydock.sql',1505229297,NULL),('phabricator:100.projectxaction.sql',1505229297,NULL),('phabricator:101.heraldruleapplied.sql',1505229297,NULL),('phabricator:102.heraldcleanup.php',1505229297,NULL),('phabricator:103.heraldedithistory.sql',1505229297,NULL),('phabricator:104.searchkey.sql',1505229297,NULL),('phabricator:105.mimetype.sql',1505229297,NULL),('phabricator:106.chatlog.sql',1505229297,NULL),('phabricator:107.oauthserver.sql',1505229297,NULL),('phabricator:108.oauthscope.sql',1505229297,NULL),('phabricator:109.oauthclientphidkey.sql',1505229297,NULL),('phabricator:110.commitaudit.sql',1505229297,NULL),('phabricator:111.commitauditmigration.php',1505229297,NULL),('phabricator:112.oauthaccesscoderedirecturi.sql',1505229297,NULL),('phabricator:113.lastreviewer.sql',1505229297,NULL),('phabricator:114.auditrequest.sql',1505229297,NULL),('phabricator:115.prepareutf8.sql',1505229297,NULL),('phabricator:116.utf8-backup-first-expect-wait.sql',1505229299,NULL),('phabricator:117.repositorydescription.php',1505229299,NULL),('phabricator:118.auditinline.sql',1505229299,NULL),('phabricator:119.filehash.sql',1505229299,NULL),('phabricator:120.noop.sql',1505229299,NULL),('phabricator:121.drydocklog.sql',1505229299,NULL),('phabricator:122.flag.sql',1505229299,NULL),('phabricator:123.heraldrulelog.sql',1505229299,NULL),('phabricator:124.subpriority.sql',1505229299,NULL),('phabricator:125.ipv6.sql',1505229299,NULL),('phabricator:126.edges.sql',1505229299,NULL),('phabricator:127.userkeybody.sql',1505229299,NULL),('phabricator:128.phabricatorcom.sql',1505229299,NULL),('phabricator:129.savedquery.sql',1505229299,NULL),('phabricator:130.denormalrevisionquery.sql',1505229299,NULL),('phabricator:131.migraterevisionquery.php',1505229299,NULL),('phabricator:132.phame.sql',1505229299,NULL),('phabricator:133.imagemacro.sql',1505229299,NULL),('phabricator:134.emptysearch.sql',1505229299,NULL),('phabricator:135.datecommitted.sql',1505229299,NULL),('phabricator:136.sex.sql',1505229299,NULL),('phabricator:137.auditmetadata.sql',1505229299,NULL),('phabricator:138.notification.sql',1505229299,NULL),('phabricator:20121209.pholioxactions.sql',1505229300,NULL),('phabricator:20121209.xmacroadd.sql',1505229300,NULL),('phabricator:20121209.xmacromigrate.php',1505229300,NULL),('phabricator:20121209.xmacromigratekey.sql',1505229300,NULL),('phabricator:20121220.generalcache.sql',1505229300,NULL),('phabricator:20121226.config.sql',1505229300,NULL),('phabricator:20130101.confxaction.sql',1505229300,NULL),('phabricator:20130102.metamtareceivedmailmessageidhash.sql',1505229300,NULL),('phabricator:20130103.filemetadata.sql',1505229300,NULL),('phabricator:20130111.conpherence.sql',1505229300,NULL),('phabricator:20130127.altheraldtranscript.sql',1505229300,NULL),('phabricator:20130131.conpherencepics.sql',1505229300,NULL),('phabricator:20130201.revisionunsubscribed.php',1505229300,NULL),('phabricator:20130201.revisionunsubscribed.sql',1505229300,NULL),('phabricator:20130214.chatlogchannel.sql',1505229300,NULL),('phabricator:20130214.chatlogchannelid.sql',1505229300,NULL),('phabricator:20130214.token.sql',1505229300,NULL),('phabricator:20130215.phabricatorfileaddttl.sql',1505229300,NULL),('phabricator:20130217.cachettl.sql',1505229300,NULL),('phabricator:20130218.longdaemon.sql',1505229300,NULL),('phabricator:20130218.updatechannelid.php',1505229300,NULL),('phabricator:20130219.commitsummary.sql',1505229300,NULL),('phabricator:20130219.commitsummarymig.php',1505229300,NULL),('phabricator:20130222.dropchannel.sql',1505229300,NULL),('phabricator:20130226.commitkey.sql',1505229301,NULL),('phabricator:20130304.lintauthor.sql',1505229301,NULL),('phabricator:20130310.xactionmeta.sql',1505229301,NULL),('phabricator:20130317.phrictionedge.sql',1505229301,NULL),('phabricator:20130319.conpherence.sql',1505229301,NULL),('phabricator:20130319.phabricatorfileexplicitupload.sql',1505229301,NULL),('phabricator:20130320.phlux.sql',1505229301,NULL),('phabricator:20130321.token.sql',1505229301,NULL),('phabricator:20130322.phortune.sql',1505229301,NULL),('phabricator:20130323.phortunepayment.sql',1505229301,NULL),('phabricator:20130324.phortuneproduct.sql',1505229301,NULL),('phabricator:20130330.phrequent.sql',1505229301,NULL),('phabricator:20130403.conpherencecache.sql',1505229301,NULL),('phabricator:20130403.conpherencecachemig.php',1505229301,NULL),('phabricator:20130409.commitdrev.php',1505229301,NULL),('phabricator:20130417.externalaccount.sql',1505229301,NULL),('phabricator:20130423.conpherenceindices.sql',1505229301,NULL),('phabricator:20130423.phortunepaymentrevised.sql',1505229301,NULL),('phabricator:20130423.updateexternalaccount.sql',1505229301,NULL),('phabricator:20130426.search_savedquery.sql',1505229301,NULL),('phabricator:20130502.countdownrevamp1.sql',1505229301,NULL),('phabricator:20130502.countdownrevamp2.php',1505229301,NULL),('phabricator:20130502.countdownrevamp3.sql',1505229301,NULL),('phabricator:20130507.releephrqmailkey.sql',1505229301,NULL),('phabricator:20130507.releephrqmailkeypop.php',1505229301,NULL),('phabricator:20130507.releephrqsimplifycols.sql',1505229301,NULL),('phabricator:20130508.releephtransactions.sql',1505229301,NULL),('phabricator:20130508.releephtransactionsmig.php',1505229301,NULL),('phabricator:20130508.search_namedquery.sql',1505229301,NULL),('phabricator:20130513.receviedmailstatus.sql',1505229301,NULL),('phabricator:20130519.diviner.sql',1505229301,NULL),('phabricator:20130521.dropconphimages.sql',1505229301,NULL),('phabricator:20130523.maniphest_owners.sql',1505229301,NULL),('phabricator:20130524.repoxactions.sql',1505229301,NULL),('phabricator:20130529.macroauthor.sql',1505229301,NULL),('phabricator:20130529.macroauthormig.php',1505229301,NULL),('phabricator:20130530.macrodatekey.sql',1505229301,NULL),('phabricator:20130530.pastekeys.sql',1505229301,NULL),('phabricator:20130530.sessionhash.php',1505229301,NULL),('phabricator:20130531.filekeys.sql',1505229301,NULL),('phabricator:20130602.morediviner.sql',1505229301,NULL),('phabricator:20130602.namedqueries.sql',1505229302,NULL),('phabricator:20130606.userxactions.sql',1505229302,NULL),('phabricator:20130607.xaccount.sql',1505229302,NULL),('phabricator:20130611.migrateoauth.php',1505229302,NULL),('phabricator:20130611.nukeldap.php',1505229302,NULL),('phabricator:20130613.authdb.sql',1505229302,NULL),('phabricator:20130619.authconf.php',1505229302,NULL),('phabricator:20130620.diffxactions.sql',1505229302,NULL),('phabricator:20130621.diffcommentphid.sql',1505229302,NULL),('phabricator:20130621.diffcommentphidmig.php',1505229302,NULL),('phabricator:20130621.diffcommentunphid.sql',1505229302,NULL),('phabricator:20130622.doorkeeper.sql',1505229302,NULL),('phabricator:20130628.legalpadv0.sql',1505229302,NULL),('phabricator:20130701.conduitlog.sql',1505229302,NULL),('phabricator:20130703.legalpaddocdenorm.php',1505229302,NULL),('phabricator:20130703.legalpaddocdenorm.sql',1505229302,NULL),('phabricator:20130709.droptimeline.sql',1505229302,NULL),('phabricator:20130709.legalpadsignature.sql',1505229302,NULL),('phabricator:20130711.pholioimageobsolete.php',1505229302,NULL),('phabricator:20130711.pholioimageobsolete.sql',1505229302,NULL),('phabricator:20130711.pholioimageobsolete2.sql',1505229302,NULL),('phabricator:20130711.trimrealnames.php',1505229302,NULL),('phabricator:20130714.votexactions.sql',1505229302,NULL),('phabricator:20130715.votecomments.php',1505229302,NULL),('phabricator:20130715.voteedges.sql',1505229302,NULL),('phabricator:20130716.archivememberlessprojects.php',1505229302,NULL),('phabricator:20130722.pholioreplace.sql',1505229302,NULL),('phabricator:20130723.taskstarttime.sql',1505229302,NULL),('phabricator:20130726.ponderxactions.sql',1505229302,NULL),('phabricator:20130727.ponderquestionstatus.sql',1505229302,NULL),('phabricator:20130728.ponderunique.php',1505229302,NULL),('phabricator:20130728.ponderuniquekey.sql',1505229302,NULL),('phabricator:20130728.ponderxcomment.php',1505229302,NULL),('phabricator:20130731.releephcutpointidentifier.sql',1505229302,NULL),('phabricator:20130731.releephproject.sql',1505229302,NULL),('phabricator:20130731.releephrepoid.sql',1505229302,NULL),('phabricator:20130801.pastexactions.php',1505229302,NULL),('phabricator:20130801.pastexactions.sql',1505229302,NULL),('phabricator:20130802.heraldphid.sql',1505229302,NULL),('phabricator:20130802.heraldphids.php',1505229302,NULL),('phabricator:20130802.heraldphidukey.sql',1505229302,NULL),('phabricator:20130802.heraldxactions.sql',1505229302,NULL),('phabricator:20130805.pasteedges.sql',1505229302,NULL),('phabricator:20130805.pastemailkey.sql',1505229302,NULL),('phabricator:20130805.pastemailkeypop.php',1505229302,NULL),('phabricator:20130814.usercustom.sql',1505229302,NULL),('phabricator:20130820.file-mailkey-populate.php',1505229303,NULL),('phabricator:20130820.filemailkey.sql',1505229303,NULL),('phabricator:20130820.filexactions.sql',1505229303,NULL),('phabricator:20130820.releephxactions.sql',1505229303,NULL),('phabricator:20130826.divinernode.sql',1505229303,NULL),('phabricator:20130912.maniphest.1.touch.sql',1505229303,NULL),('phabricator:20130912.maniphest.2.created.sql',1505229303,NULL),('phabricator:20130912.maniphest.3.nameindex.sql',1505229303,NULL),('phabricator:20130912.maniphest.4.fillindex.php',1505229303,NULL),('phabricator:20130913.maniphest.1.migratesearch.php',1505229303,NULL),('phabricator:20130914.usercustom.sql',1505229303,NULL),('phabricator:20130915.maniphestcustom.sql',1505229303,NULL),('phabricator:20130915.maniphestmigrate.php',1505229303,NULL),('phabricator:20130915.maniphestqdrop.sql',1505229303,NULL),('phabricator:20130919.mfieldconf.php',1505229303,NULL),('phabricator:20130920.repokeyspolicy.sql',1505229303,NULL),('phabricator:20130921.mtransactions.sql',1505229303,NULL),('phabricator:20130921.xmigratemaniphest.php',1505229303,NULL),('phabricator:20130923.mrename.sql',1505229303,NULL),('phabricator:20130924.mdraftkey.sql',1505229303,NULL),('phabricator:20130925.mpolicy.sql',1505229303,NULL),('phabricator:20130925.xpolicy.sql',1505229303,NULL),('phabricator:20130926.dcustom.sql',1505229303,NULL),('phabricator:20130926.dinkeys.sql',1505229303,NULL),('phabricator:20130926.dinline.php',1505229303,NULL),('phabricator:20130927.audiomacro.sql',1505229303,NULL),('phabricator:20130929.filepolicy.sql',1505229303,NULL),('phabricator:20131004.dxedgekey.sql',1505229303,NULL),('phabricator:20131004.dxreviewers.php',1505229303,NULL),('phabricator:20131006.hdisable.sql',1505229303,NULL),('phabricator:20131010.pstorage.sql',1505229303,NULL),('phabricator:20131015.cpolicy.sql',1505229303,NULL),('phabricator:20131020.col1.sql',1505229303,NULL),('phabricator:20131020.harbormaster.sql',1505229303,NULL),('phabricator:20131020.pcustom.sql',1505229303,NULL),('phabricator:20131020.pxaction.sql',1505229303,NULL),('phabricator:20131020.pxactionmig.php',1505229303,NULL),('phabricator:20131025.repopush.sql',1505229304,NULL),('phabricator:20131026.commitstatus.sql',1505229304,NULL),('phabricator:20131030.repostatusmessage.sql',1505229304,NULL),('phabricator:20131031.vcspassword.sql',1505229304,NULL),('phabricator:20131105.buildstep.sql',1505229304,NULL),('phabricator:20131106.diffphid.1.col.sql',1505229304,NULL),('phabricator:20131106.diffphid.2.mig.php',1505229304,NULL),('phabricator:20131106.diffphid.3.key.sql',1505229304,NULL),('phabricator:20131106.nuance-v0.sql',1505229304,NULL),('phabricator:20131107.buildlog.sql',1505229304,NULL),('phabricator:20131112.userverified.1.col.sql',1505229304,NULL),('phabricator:20131112.userverified.2.mig.php',1505229304,NULL),('phabricator:20131118.ownerorder.php',1505229304,NULL),('phabricator:20131119.passphrase.sql',1505229304,NULL),('phabricator:20131120.nuancesourcetype.sql',1505229304,NULL),('phabricator:20131121.passphraseedge.sql',1505229304,NULL),('phabricator:20131121.repocredentials.1.col.sql',1505229304,NULL),('phabricator:20131121.repocredentials.2.mig.php',1505229304,NULL),('phabricator:20131122.repomirror.sql',1505229304,NULL),('phabricator:20131123.drydockblueprintpolicy.sql',1505229304,NULL),('phabricator:20131129.drydockresourceblueprint.sql',1505229304,NULL),('phabricator:20131204.pushlog.sql',1505229304,NULL),('phabricator:20131205.buildsteporder.sql',1505229304,NULL),('phabricator:20131205.buildstepordermig.php',1505229304,NULL),('phabricator:20131205.buildtargets.sql',1505229304,NULL),('phabricator:20131206.phragment.sql',1505229304,NULL),('phabricator:20131206.phragmentnull.sql',1505229304,NULL),('phabricator:20131208.phragmentsnapshot.sql',1505229305,NULL),('phabricator:20131211.phragmentedges.sql',1505229305,NULL),('phabricator:20131217.pushlogphid.1.col.sql',1505229305,NULL),('phabricator:20131217.pushlogphid.2.mig.php',1505229305,NULL),('phabricator:20131217.pushlogphid.3.key.sql',1505229305,NULL),('phabricator:20131219.pxdrop.sql',1505229305,NULL),('phabricator:20131224.harbormanual.sql',1505229305,NULL),('phabricator:20131227.heraldobject.sql',1505229305,NULL),('phabricator:20131231.dropshortcut.sql',1505229305,NULL),('phabricator:20131302.maniphestvalue.sql',1505229301,NULL),('phabricator:20140104.harbormastercmd.sql',1505229305,NULL),('phabricator:20140106.macromailkey.1.sql',1505229305,NULL),('phabricator:20140106.macromailkey.2.php',1505229305,NULL),('phabricator:20140108.ddbpname.1.sql',1505229305,NULL),('phabricator:20140108.ddbpname.2.php',1505229305,NULL),('phabricator:20140109.ddxactions.sql',1505229305,NULL),('phabricator:20140109.projectcolumnsdates.sql',1505229305,NULL),('phabricator:20140113.legalpadsig.1.sql',1505229305,NULL),('phabricator:20140113.legalpadsig.2.php',1505229305,NULL),('phabricator:20140115.auth.1.id.sql',1505229305,NULL),('phabricator:20140115.auth.2.expires.sql',1505229305,NULL),('phabricator:20140115.auth.3.unlimit.php',1505229305,NULL),('phabricator:20140115.legalpadsigkey.sql',1505229305,NULL),('phabricator:20140116.reporefcursor.sql',1505229305,NULL),('phabricator:20140126.diff.1.parentrevisionid.sql',1505229305,NULL),('phabricator:20140126.diff.2.repositoryphid.sql',1505229305,NULL),('phabricator:20140130.dash.1.board.sql',1505229305,NULL),('phabricator:20140130.dash.2.panel.sql',1505229305,NULL),('phabricator:20140130.dash.3.boardxaction.sql',1505229305,NULL),('phabricator:20140130.dash.4.panelxaction.sql',1505229305,NULL),('phabricator:20140130.mail.1.retry.sql',1505229305,NULL),('phabricator:20140130.mail.2.next.sql',1505229305,NULL),('phabricator:20140201.gc.1.mailsent.sql',1505229305,NULL),('phabricator:20140201.gc.2.mailreceived.sql',1505229305,NULL),('phabricator:20140205.cal.1.rename.sql',1505229305,NULL),('phabricator:20140205.cal.2.phid-col.sql',1505229305,NULL),('phabricator:20140205.cal.3.phid-mig.php',1505229305,NULL),('phabricator:20140205.cal.4.phid-key.sql',1505229305,NULL),('phabricator:20140210.herald.rule-condition-mig.php',1505229305,NULL),('phabricator:20140210.projcfield.1.blurb.php',1505229305,NULL),('phabricator:20140210.projcfield.2.piccol.sql',1505229305,NULL),('phabricator:20140210.projcfield.3.picmig.sql',1505229305,NULL),('phabricator:20140210.projcfield.4.memmig.sql',1505229305,NULL),('phabricator:20140210.projcfield.5.dropprofile.sql',1505229305,NULL),('phabricator:20140211.dx.1.nullablechangesetid.sql',1505229305,NULL),('phabricator:20140211.dx.2.migcommenttext.php',1505229305,NULL),('phabricator:20140211.dx.3.migsubscriptions.sql',1505229305,NULL),('phabricator:20140211.dx.999.drop.relationships.sql',1505229305,NULL),('phabricator:20140212.dx.1.armageddon.php',1505229305,NULL),('phabricator:20140214.clean.1.legacycommentid.sql',1505229305,NULL),('phabricator:20140214.clean.2.dropcomment.sql',1505229305,NULL),('phabricator:20140214.clean.3.dropinline.sql',1505229305,NULL),('phabricator:20140218.differentialdraft.sql',1505229305,NULL),('phabricator:20140218.passwords.1.extend.sql',1505229305,NULL),('phabricator:20140218.passwords.2.prefix.sql',1505229305,NULL),('phabricator:20140218.passwords.3.vcsextend.sql',1505229305,NULL),('phabricator:20140218.passwords.4.vcs.php',1505229305,NULL),('phabricator:20140223.bigutf8scratch.sql',1505229305,NULL),('phabricator:20140224.dxclean.1.datecommitted.sql',1505229305,NULL),('phabricator:20140226.dxcustom.1.fielddata.php',1505229305,NULL),('phabricator:20140226.dxcustom.99.drop.sql',1505229305,NULL),('phabricator:20140228.dxcomment.1.sql',1505229305,NULL),('phabricator:20140305.diviner.1.slugcol.sql',1505229305,NULL),('phabricator:20140305.diviner.2.slugkey.sql',1505229306,NULL),('phabricator:20140311.mdroplegacy.sql',1505229306,NULL),('phabricator:20140314.projectcolumn.1.statuscol.sql',1505229306,NULL),('phabricator:20140314.projectcolumn.2.statuskey.sql',1505229306,NULL),('phabricator:20140317.mupdatedkey.sql',1505229306,NULL),('phabricator:20140321.harbor.1.bxaction.sql',1505229306,NULL),('phabricator:20140321.mstatus.1.col.sql',1505229306,NULL),('phabricator:20140321.mstatus.2.mig.php',1505229306,NULL),('phabricator:20140323.harbor.1.renames.php',1505229306,NULL),('phabricator:20140323.harbor.2.message.sql',1505229306,NULL),('phabricator:20140325.push.1.event.sql',1505229306,NULL),('phabricator:20140325.push.2.eventphid.sql',1505229306,NULL),('phabricator:20140325.push.3.groups.php',1505229306,NULL),('phabricator:20140325.push.4.prune.sql',1505229306,NULL),('phabricator:20140326.project.1.colxaction.sql',1505229306,NULL),('phabricator:20140328.releeph.1.productxaction.sql',1505229306,NULL),('phabricator:20140330.flagtext.sql',1505229306,NULL),('phabricator:20140402.actionlog.sql',1505229306,NULL),('phabricator:20140410.accountsecret.1.sql',1505229306,NULL),('phabricator:20140410.accountsecret.2.php',1505229306,NULL),('phabricator:20140416.harbor.1.sql',1505229306,NULL),('phabricator:20140420.rel.1.objectphid.sql',1505229306,NULL),('phabricator:20140420.rel.2.objectmig.php',1505229306,NULL),('phabricator:20140421.slowvotecolumnsisclosed.sql',1505229306,NULL),('phabricator:20140423.session.1.hisec.sql',1505229306,NULL),('phabricator:20140427.mfactor.1.sql',1505229306,NULL),('phabricator:20140430.auth.1.partial.sql',1505229306,NULL),('phabricator:20140430.dash.1.paneltype.sql',1505229306,NULL),('phabricator:20140430.dash.2.edge.sql',1505229306,NULL),('phabricator:20140501.passphraselockcredential.sql',1505229306,NULL),('phabricator:20140501.remove.1.dlog.sql',1505229306,NULL),('phabricator:20140507.smstable.sql',1505229306,NULL),('phabricator:20140509.coverage.1.sql',1505229306,NULL),('phabricator:20140509.dashboardlayoutconfig.sql',1505229306,NULL),('phabricator:20140512.dparents.1.sql',1505229306,NULL),('phabricator:20140514.harbormasterbuildabletransaction.sql',1505229306,NULL),('phabricator:20140514.pholiomockclose.sql',1505229306,NULL),('phabricator:20140515.trust-emails.sql',1505229306,NULL),('phabricator:20140517.dxbinarycache.sql',1505229306,NULL),('phabricator:20140518.dxmorebinarycache.sql',1505229306,NULL),('phabricator:20140519.dashboardinstall.sql',1505229306,NULL),('phabricator:20140520.authtemptoken.sql',1505229306,NULL),('phabricator:20140521.projectslug.1.create.sql',1505229306,NULL),('phabricator:20140521.projectslug.2.mig.php',1505229306,NULL),('phabricator:20140522.projecticon.sql',1505229306,NULL),('phabricator:20140524.auth.mfa.cache.sql',1505229306,NULL),('phabricator:20140525.hunkmodern.sql',1505229306,NULL),('phabricator:20140615.pholioedit.1.sql',1505229306,NULL),('phabricator:20140615.pholioedit.2.sql',1505229306,NULL),('phabricator:20140617.daemon.explicit-argv.sql',1505229306,NULL),('phabricator:20140617.daemonlog.sql',1505229306,NULL),('phabricator:20140624.projcolor.1.sql',1505229306,NULL),('phabricator:20140624.projcolor.2.sql',1505229306,NULL),('phabricator:20140629.dasharchive.1.sql',1505229306,NULL),('phabricator:20140629.legalsig.1.sql',1505229306,NULL),('phabricator:20140629.legalsig.2.php',1505229306,NULL),('phabricator:20140701.legalexemption.1.sql',1505229306,NULL),('phabricator:20140701.legalexemption.2.sql',1505229306,NULL),('phabricator:20140703.legalcorp.1.sql',1505229306,NULL),('phabricator:20140703.legalcorp.2.sql',1505229306,NULL),('phabricator:20140703.legalcorp.3.sql',1505229306,NULL),('phabricator:20140703.legalcorp.4.sql',1505229306,NULL),('phabricator:20140703.legalcorp.5.sql',1505229306,NULL),('phabricator:20140704.harbormasterstep.1.sql',1505229306,NULL),('phabricator:20140704.harbormasterstep.2.sql',1505229306,NULL),('phabricator:20140704.legalpreamble.1.sql',1505229307,NULL),('phabricator:20140706.harbormasterdepend.1.php',1505229307,NULL),('phabricator:20140706.pedge.1.sql',1505229307,NULL),('phabricator:20140711.pnames.1.sql',1505229307,NULL),('phabricator:20140711.pnames.2.php',1505229307,NULL),('phabricator:20140711.workerpriority.sql',1505229307,NULL),('phabricator:20140712.projcoluniq.sql',1505229307,NULL),('phabricator:20140721.phortune.1.cart.sql',1505229307,NULL),('phabricator:20140721.phortune.2.purchase.sql',1505229307,NULL),('phabricator:20140721.phortune.3.charge.sql',1505229307,NULL),('phabricator:20140721.phortune.4.cartstatus.sql',1505229307,NULL),('phabricator:20140721.phortune.5.cstatusdefault.sql',1505229307,NULL),('phabricator:20140721.phortune.6.onetimecharge.sql',1505229307,NULL),('phabricator:20140721.phortune.7.nullmethod.sql',1505229307,NULL),('phabricator:20140722.appname.php',1505229307,NULL),('phabricator:20140722.audit.1.xactions.sql',1505229307,NULL),('phabricator:20140722.audit.2.comments.sql',1505229307,NULL),('phabricator:20140722.audit.3.miginlines.php',1505229307,NULL),('phabricator:20140722.audit.4.migtext.php',1505229307,NULL),('phabricator:20140722.renameauth.php',1505229307,NULL),('phabricator:20140723.apprenamexaction.sql',1505229307,NULL),('phabricator:20140725.audit.1.migxactions.php',1505229307,NULL),('phabricator:20140731.audit.1.subscribers.php',1505229307,NULL),('phabricator:20140731.cancdn.php',1505229307,NULL),('phabricator:20140731.harbormasterstepdesc.sql',1505229307,NULL),('phabricator:20140805.boardcol.1.sql',1505229307,NULL),('phabricator:20140805.boardcol.2.php',1505229307,NULL),('phabricator:20140807.harbormastertargettime.sql',1505229307,NULL),('phabricator:20140808.boardprop.1.sql',1505229307,NULL),('phabricator:20140808.boardprop.2.sql',1505229307,NULL),('phabricator:20140808.boardprop.3.php',1505229307,NULL),('phabricator:20140811.blob.1.sql',1505229307,NULL),('phabricator:20140811.blob.2.sql',1505229307,NULL),('phabricator:20140812.projkey.1.sql',1505229307,NULL),('phabricator:20140812.projkey.2.sql',1505229307,NULL),('phabricator:20140814.passphrasecredentialconduit.sql',1505229307,NULL),('phabricator:20140815.cancdncase.php',1505229307,NULL),('phabricator:20140818.harbormasterindex.1.sql',1505229307,NULL),('phabricator:20140821.harbormasterbuildgen.1.sql',1505229307,NULL),('phabricator:20140822.daemonenvhash.sql',1505229307,NULL),('phabricator:20140902.almanacdevice.1.sql',1505229307,NULL),('phabricator:20140904.macroattach.php',1505229307,NULL),('phabricator:20140911.fund.1.initiative.sql',1505229307,NULL),('phabricator:20140911.fund.2.xaction.sql',1505229307,NULL),('phabricator:20140911.fund.3.edge.sql',1505229307,NULL),('phabricator:20140911.fund.4.backer.sql',1505229307,NULL),('phabricator:20140911.fund.5.backxaction.sql',1505229307,NULL),('phabricator:20140914.betaproto.php',1505229307,NULL),('phabricator:20140917.project.canlock.sql',1505229307,NULL),('phabricator:20140918.schema.1.dropaudit.sql',1505229307,NULL),('phabricator:20140918.schema.2.dropauditinline.sql',1505229307,NULL),('phabricator:20140918.schema.3.wipecache.sql',1505229307,NULL),('phabricator:20140918.schema.4.cachetype.sql',1505229307,NULL),('phabricator:20140918.schema.5.slowvote.sql',1505229307,NULL),('phabricator:20140919.schema.01.calstatus.sql',1505229307,NULL),('phabricator:20140919.schema.02.calname.sql',1505229307,NULL),('phabricator:20140919.schema.03.dropaux.sql',1505229307,NULL),('phabricator:20140919.schema.04.droptaskproj.sql',1505229307,NULL),('phabricator:20140926.schema.01.droprelev.sql',1505229307,NULL),('phabricator:20140926.schema.02.droprelreqev.sql',1505229307,NULL),('phabricator:20140926.schema.03.dropldapinfo.sql',1505229307,NULL),('phabricator:20140926.schema.04.dropoauthinfo.sql',1505229307,NULL),('phabricator:20140926.schema.05.dropprojaffil.sql',1505229307,NULL),('phabricator:20140926.schema.06.dropsubproject.sql',1505229307,NULL),('phabricator:20140926.schema.07.droppondcom.sql',1505229307,NULL),('phabricator:20140927.schema.01.dropsearchq.sql',1505229307,NULL),('phabricator:20140927.schema.02.pholio1.sql',1505229307,NULL),('phabricator:20140927.schema.03.pholio2.sql',1505229307,NULL),('phabricator:20140927.schema.04.pholio3.sql',1505229307,NULL),('phabricator:20140927.schema.05.phragment1.sql',1505229307,NULL),('phabricator:20140927.schema.06.releeph1.sql',1505229307,NULL),('phabricator:20141001.schema.01.version.sql',1505229307,NULL),('phabricator:20141001.schema.02.taskmail.sql',1505229307,NULL),('phabricator:20141002.schema.01.liskcounter.sql',1505229307,NULL),('phabricator:20141002.schema.02.draftnull.sql',1505229307,NULL),('phabricator:20141004.currency.01.sql',1505229307,NULL),('phabricator:20141004.currency.02.sql',1505229307,NULL),('phabricator:20141004.currency.03.sql',1505229307,NULL),('phabricator:20141004.currency.04.sql',1505229307,NULL),('phabricator:20141004.currency.05.sql',1505229307,NULL),('phabricator:20141004.currency.06.sql',1505229307,NULL),('phabricator:20141004.harborliskcounter.sql',1505229307,NULL),('phabricator:20141005.phortuneproduct.sql',1505229308,NULL),('phabricator:20141006.phortunecart.sql',1505229308,NULL),('phabricator:20141006.phortunemerchant.sql',1505229308,NULL),('phabricator:20141006.phortunemerchantx.sql',1505229308,NULL),('phabricator:20141007.fundmerchant.sql',1505229308,NULL),('phabricator:20141007.fundrisks.sql',1505229308,NULL),('phabricator:20141007.fundtotal.sql',1505229308,NULL),('phabricator:20141007.phortunecartmerchant.sql',1505229308,NULL),('phabricator:20141007.phortunecharge.sql',1505229308,NULL),('phabricator:20141007.phortunepayment.sql',1505229308,NULL),('phabricator:20141007.phortuneprovider.sql',1505229308,NULL),('phabricator:20141007.phortuneproviderx.sql',1505229308,NULL),('phabricator:20141008.phortunemerchdesc.sql',1505229308,NULL),('phabricator:20141008.phortuneprovdis.sql',1505229308,NULL),('phabricator:20141008.phortunerefund.sql',1505229308,NULL),('phabricator:20141010.fundmailkey.sql',1505229308,NULL),('phabricator:20141011.phortunemerchedit.sql',1505229308,NULL),('phabricator:20141012.phortunecartxaction.sql',1505229308,NULL),('phabricator:20141013.phortunecartkey.sql',1505229308,NULL),('phabricator:20141016.almanac.device.sql',1505229308,NULL),('phabricator:20141016.almanac.dxaction.sql',1505229308,NULL),('phabricator:20141016.almanac.interface.sql',1505229308,NULL),('phabricator:20141016.almanac.network.sql',1505229308,NULL),('phabricator:20141016.almanac.nxaction.sql',1505229308,NULL),('phabricator:20141016.almanac.service.sql',1505229308,NULL),('phabricator:20141016.almanac.sxaction.sql',1505229308,NULL),('phabricator:20141017.almanac.binding.sql',1505229308,NULL),('phabricator:20141017.almanac.bxaction.sql',1505229308,NULL),('phabricator:20141025.phriction.1.xaction.sql',1505229308,NULL),('phabricator:20141025.phriction.2.xaction.sql',1505229308,NULL),('phabricator:20141025.phriction.mailkey.sql',1505229308,NULL),('phabricator:20141103.almanac.1.delprop.sql',1505229308,NULL),('phabricator:20141103.almanac.2.addprop.sql',1505229308,NULL),('phabricator:20141104.almanac.3.edge.sql',1505229308,NULL),('phabricator:20141105.ssh.1.rename.sql',1505229308,NULL),('phabricator:20141106.dropold.sql',1505229308,NULL),('phabricator:20141106.uniqdrafts.php',1505229308,NULL),('phabricator:20141107.phriction.policy.1.sql',1505229308,NULL),('phabricator:20141107.phriction.policy.2.php',1505229308,NULL),('phabricator:20141107.phriction.popkeys.php',1505229308,NULL),('phabricator:20141107.ssh.1.colname.sql',1505229308,NULL),('phabricator:20141107.ssh.2.keyhash.sql',1505229308,NULL),('phabricator:20141107.ssh.3.keyindex.sql',1505229308,NULL),('phabricator:20141107.ssh.4.keymig.php',1505229308,NULL),('phabricator:20141107.ssh.5.indexnull.sql',1505229308,NULL),('phabricator:20141107.ssh.6.indexkey.sql',1505229308,NULL),('phabricator:20141107.ssh.7.colnull.sql',1505229308,NULL),('phabricator:20141113.auditdupes.php',1505229308,NULL),('phabricator:20141118.diffxaction.sql',1505229308,NULL),('phabricator:20141119.commitpedge.sql',1505229308,NULL),('phabricator:20141119.differential.diff.policy.sql',1505229308,NULL),('phabricator:20141119.sshtrust.sql',1505229308,NULL),('phabricator:20141123.taskpriority.1.sql',1505229308,NULL),('phabricator:20141123.taskpriority.2.sql',1505229308,NULL),('phabricator:20141210.maniphestsubscribersmig.1.sql',1505229308,NULL),('phabricator:20141210.maniphestsubscribersmig.2.sql',1505229308,NULL),('phabricator:20141210.reposervice.sql',1505229309,NULL),('phabricator:20141212.conduittoken.sql',1505229309,NULL),('phabricator:20141215.almanacservicetype.sql',1505229309,NULL),('phabricator:20141217.almanacdevicelock.sql',1505229309,NULL),('phabricator:20141217.almanaclock.sql',1505229309,NULL),('phabricator:20141218.maniphestcctxn.php',1505229309,NULL),('phabricator:20141222.maniphestprojtxn.php',1505229309,NULL),('phabricator:20141223.daemonloguser.sql',1505229309,NULL),('phabricator:20141223.daemonobjectphid.sql',1505229309,NULL),('phabricator:20141230.pasteeditpolicycolumn.sql',1505229309,NULL),('phabricator:20141230.pasteeditpolicyexisting.sql',1505229309,NULL),('phabricator:20150102.policyname.php',1505229309,NULL),('phabricator:20150102.tasksubscriber.sql',1505229309,NULL),('phabricator:20150105.conpsearch.sql',1505229309,NULL),('phabricator:20150114.oauthserver.client.policy.sql',1505229309,NULL),('phabricator:20150115.applicationemails.sql',1505229309,NULL),('phabricator:20150115.trigger.1.sql',1505229309,NULL),('phabricator:20150115.trigger.2.sql',1505229309,NULL),('phabricator:20150116.maniphestapplicationemails.php',1505229309,NULL),('phabricator:20150120.maniphestdefaultauthor.php',1505229309,NULL),('phabricator:20150124.subs.1.sql',1505229309,NULL),('phabricator:20150129.pastefileapplicationemails.php',1505229309,NULL),('phabricator:20150130.phortune.1.subphid.sql',1505229309,NULL),('phabricator:20150130.phortune.2.subkey.sql',1505229309,NULL),('phabricator:20150131.phortune.1.defaultpayment.sql',1505229309,NULL),('phabricator:20150205.authprovider.autologin.sql',1505229309,NULL),('phabricator:20150205.daemonenv.sql',1505229309,NULL),('phabricator:20150209.invite.sql',1505229309,NULL),('phabricator:20150209.oauthclient.trust.sql',1505229309,NULL),('phabricator:20150210.invitephid.sql',1505229309,NULL),('phabricator:20150212.legalpad.session.1.sql',1505229309,NULL),('phabricator:20150212.legalpad.session.2.sql',1505229309,NULL),('phabricator:20150219.scratch.nonmutable.sql',1505229309,NULL),('phabricator:20150223.daemon.1.id.sql',1505229309,NULL),('phabricator:20150223.daemon.2.idlegacy.sql',1505229309,NULL),('phabricator:20150223.daemon.3.idkey.sql',1505229309,NULL),('phabricator:20150312.filechunk.1.sql',1505229309,NULL),('phabricator:20150312.filechunk.2.sql',1505229309,NULL),('phabricator:20150312.filechunk.3.sql',1505229309,NULL),('phabricator:20150317.conpherence.isroom.1.sql',1505229309,NULL),('phabricator:20150317.conpherence.isroom.2.sql',1505229309,NULL),('phabricator:20150317.conpherence.policy.sql',1505229309,NULL),('phabricator:20150410.nukeruleedit.sql',1505229309,NULL),('phabricator:20150420.invoice.1.sql',1505229309,NULL),('phabricator:20150420.invoice.2.sql',1505229309,NULL),('phabricator:20150425.isclosed.sql',1505229309,NULL),('phabricator:20150427.calendar.1.edge.sql',1505229309,NULL),('phabricator:20150427.calendar.1.xaction.sql',1505229309,NULL),('phabricator:20150427.calendar.2.xaction.sql',1505229309,NULL),('phabricator:20150428.calendar.1.iscancelled.sql',1505229309,NULL),('phabricator:20150428.calendar.1.name.sql',1505229309,NULL),('phabricator:20150429.calendar.1.invitee.sql',1505229309,NULL),('phabricator:20150430.calendar.1.policies.sql',1505229309,NULL),('phabricator:20150430.multimeter.1.sql',1505229309,NULL),('phabricator:20150430.multimeter.2.host.sql',1505229309,NULL),('phabricator:20150430.multimeter.3.viewer.sql',1505229309,NULL),('phabricator:20150430.multimeter.4.context.sql',1505229309,NULL),('phabricator:20150430.multimeter.5.label.sql',1505229309,NULL),('phabricator:20150501.calendar.1.reply.sql',1505229309,NULL),('phabricator:20150501.calendar.2.reply.php',1505229309,NULL),('phabricator:20150501.conpherencepics.sql',1505229309,NULL),('phabricator:20150503.repositorysymbols.1.sql',1505229309,NULL),('phabricator:20150503.repositorysymbols.2.php',1505229309,NULL),('phabricator:20150503.repositorysymbols.3.sql',1505229309,NULL),('phabricator:20150504.symbolsproject.1.php',1505229309,NULL),('phabricator:20150504.symbolsproject.2.sql',1505229309,NULL),('phabricator:20150506.calendarunnamedevents.1.php',1505229309,NULL),('phabricator:20150507.calendar.1.isallday.sql',1505229309,NULL),('phabricator:20150513.user.cache.1.sql',1505229310,NULL),('phabricator:20150514.calendar.status.sql',1505229310,NULL),('phabricator:20150514.phame.blog.xaction.sql',1505229310,NULL),('phabricator:20150514.user.cache.2.sql',1505229310,NULL),('phabricator:20150515.phame.post.xaction.sql',1505229310,NULL),('phabricator:20150515.project.mailkey.1.sql',1505229310,NULL),('phabricator:20150515.project.mailkey.2.php',1505229310,NULL),('phabricator:20150519.calendar.calendaricon.sql',1505229310,NULL),('phabricator:20150521.releephrepository.sql',1505229310,NULL),('phabricator:20150525.diff.hidden.1.sql',1505229310,NULL),('phabricator:20150526.owners.mailkey.1.sql',1505229310,NULL),('phabricator:20150526.owners.mailkey.2.php',1505229310,NULL),('phabricator:20150526.owners.xaction.sql',1505229310,NULL),('phabricator:20150527.calendar.recurringevents.sql',1505229310,NULL),('phabricator:20150601.spaces.1.namespace.sql',1505229310,NULL),('phabricator:20150601.spaces.2.xaction.sql',1505229310,NULL),('phabricator:20150602.mlist.1.sql',1505229310,NULL),('phabricator:20150602.mlist.2.php',1505229310,NULL),('phabricator:20150604.spaces.1.sql',1505229310,NULL),('phabricator:20150605.diviner.edges.sql',1505229310,NULL),('phabricator:20150605.diviner.editPolicy.sql',1505229310,NULL),('phabricator:20150605.diviner.xaction.sql',1505229310,NULL),('phabricator:20150606.mlist.1.php',1505229310,NULL),('phabricator:20150609.inline.sql',1505229310,NULL),('phabricator:20150609.spaces.1.pholio.sql',1505229310,NULL),('phabricator:20150609.spaces.2.maniphest.sql',1505229310,NULL),('phabricator:20150610.spaces.1.desc.sql',1505229310,NULL),('phabricator:20150610.spaces.2.edge.sql',1505229310,NULL),('phabricator:20150610.spaces.3.archive.sql',1505229310,NULL),('phabricator:20150611.spaces.1.mailxaction.sql',1505229310,NULL),('phabricator:20150611.spaces.2.appmail.sql',1505229310,NULL),('phabricator:20150616.divinerrepository.sql',1505229310,NULL),('phabricator:20150617.harbor.1.lint.sql',1505229310,NULL),('phabricator:20150617.harbor.2.unit.sql',1505229310,NULL),('phabricator:20150618.harbor.1.planauto.sql',1505229310,NULL),('phabricator:20150618.harbor.2.stepauto.sql',1505229310,NULL),('phabricator:20150618.harbor.3.buildauto.sql',1505229310,NULL),('phabricator:20150619.conpherencerooms.1.sql',1505229310,NULL),('phabricator:20150619.conpherencerooms.2.sql',1505229310,NULL),('phabricator:20150619.conpherencerooms.3.sql',1505229310,NULL),('phabricator:20150621.phrase.1.sql',1505229310,NULL),('phabricator:20150621.phrase.2.sql',1505229310,NULL),('phabricator:20150622.bulk.1.job.sql',1505229310,NULL),('phabricator:20150622.bulk.2.task.sql',1505229310,NULL),('phabricator:20150622.bulk.3.xaction.sql',1505229310,NULL),('phabricator:20150622.bulk.4.edge.sql',1505229310,NULL),('phabricator:20150622.metamta.1.phid-col.sql',1505229310,NULL),('phabricator:20150622.metamta.2.phid-mig.php',1505229310,NULL),('phabricator:20150622.metamta.3.phid-key.sql',1505229310,NULL),('phabricator:20150622.metamta.4.actor-phid-col.sql',1505229310,NULL),('phabricator:20150622.metamta.5.actor-phid-mig.php',1505229310,NULL),('phabricator:20150622.metamta.6.actor-phid-key.sql',1505229310,NULL),('phabricator:20150624.spaces.1.repo.sql',1505229310,NULL),('phabricator:20150626.spaces.1.calendar.sql',1505229310,NULL),('phabricator:20150630.herald.1.sql',1505229310,NULL),('phabricator:20150630.herald.2.sql',1505229310,NULL),('phabricator:20150701.herald.1.sql',1505229310,NULL),('phabricator:20150701.herald.2.sql',1505229310,NULL),('phabricator:20150702.spaces.1.slowvote.sql',1505229310,NULL),('phabricator:20150706.herald.1.sql',1505229310,NULL),('phabricator:20150707.herald.1.sql',1505229310,NULL),('phabricator:20150708.arcanistproject.sql',1505229310,NULL),('phabricator:20150708.herald.1.sql',1505229310,NULL),('phabricator:20150708.herald.2.sql',1505229310,NULL),('phabricator:20150708.herald.3.sql',1505229310,NULL),('phabricator:20150712.badges.1.sql',1505229310,NULL),('phabricator:20150714.spaces.countdown.1.sql',1505229310,NULL),('phabricator:20150717.herald.1.sql',1505229310,NULL),('phabricator:20150719.countdown.1.sql',1505229311,NULL),('phabricator:20150719.countdown.2.sql',1505229311,NULL),('phabricator:20150719.countdown.3.sql',1505229311,NULL),('phabricator:20150721.phurl.1.url.sql',1505229311,NULL),('phabricator:20150721.phurl.2.xaction.sql',1505229311,NULL),('phabricator:20150721.phurl.3.xactioncomment.sql',1505229311,NULL),('phabricator:20150721.phurl.4.url.sql',1505229311,NULL),('phabricator:20150721.phurl.5.edge.sql',1505229311,NULL),('phabricator:20150721.phurl.6.alias.sql',1505229311,NULL),('phabricator:20150721.phurl.7.authorphid.sql',1505229311,NULL),('phabricator:20150722.dashboard.1.sql',1505229311,NULL),('phabricator:20150722.dashboard.2.sql',1505229311,NULL),('phabricator:20150723.countdown.1.sql',1505229311,NULL),('phabricator:20150724.badges.comments.1.sql',1505229311,NULL),('phabricator:20150724.countdown.comments.1.sql',1505229311,NULL),('phabricator:20150725.badges.mailkey.1.sql',1505229311,NULL),('phabricator:20150725.badges.mailkey.2.php',1505229311,NULL),('phabricator:20150725.badges.viewpolicy.3.sql',1505229311,NULL),('phabricator:20150725.countdown.mailkey.1.sql',1505229311,NULL),('phabricator:20150725.countdown.mailkey.2.php',1505229311,NULL),('phabricator:20150725.slowvote.mailkey.1.sql',1505229311,NULL),('phabricator:20150725.slowvote.mailkey.2.php',1505229311,NULL),('phabricator:20150727.heraldaction.1.sql',1505229311,NULL),('phabricator:20150730.herald.1.sql',1505229311,NULL),('phabricator:20150730.herald.2.sql',1505229311,NULL),('phabricator:20150730.herald.3.sql',1505229311,NULL),('phabricator:20150730.herald.4.sql',1505229311,NULL),('phabricator:20150730.herald.5.sql',1505229311,NULL),('phabricator:20150730.herald.6.sql',1505229311,NULL),('phabricator:20150730.herald.7.sql',1505229311,NULL),('phabricator:20150803.herald.1.sql',1505229311,NULL),('phabricator:20150803.herald.2.sql',1505229311,NULL),('phabricator:20150804.ponder.answer.mailkey.1.sql',1505229311,NULL),('phabricator:20150804.ponder.answer.mailkey.2.php',1505229311,NULL),('phabricator:20150804.ponder.question.1.sql',1505229311,NULL),('phabricator:20150804.ponder.question.2.sql',1505229311,NULL),('phabricator:20150804.ponder.question.3.sql',1505229311,NULL),('phabricator:20150804.ponder.spaces.4.sql',1505229311,NULL),('phabricator:20150805.paste.status.1.sql',1505229311,NULL),('phabricator:20150805.paste.status.2.sql',1505229311,NULL),('phabricator:20150806.ponder.answer.1.sql',1505229311,NULL),('phabricator:20150806.ponder.editpolicy.2.sql',1505229311,NULL),('phabricator:20150806.ponder.status.1.sql',1505229311,NULL),('phabricator:20150806.ponder.status.2.sql',1505229311,NULL),('phabricator:20150806.ponder.status.3.sql',1505229311,NULL),('phabricator:20150808.ponder.vote.1.sql',1505229311,NULL),('phabricator:20150808.ponder.vote.2.sql',1505229311,NULL),('phabricator:20150812.ponder.answer.1.sql',1505229311,NULL),('phabricator:20150812.ponder.answer.2.sql',1505229311,NULL),('phabricator:20150814.harbormater.artifact.phid.sql',1505229311,NULL),('phabricator:20150815.owners.status.1.sql',1505229311,NULL),('phabricator:20150815.owners.status.2.sql',1505229311,NULL),('phabricator:20150823.nuance.queue.1.sql',1505229311,NULL),('phabricator:20150823.nuance.queue.2.sql',1505229311,NULL),('phabricator:20150823.nuance.queue.3.sql',1505229311,NULL),('phabricator:20150823.nuance.queue.4.sql',1505229311,NULL),('phabricator:20150828.ponder.wiki.1.sql',1505229311,NULL),('phabricator:20150829.ponder.dupe.1.sql',1505229311,NULL),('phabricator:20150904.herald.1.sql',1505229311,NULL),('phabricator:20150906.mailinglist.sql',1505229311,NULL),('phabricator:20150910.owners.custom.1.sql',1505229311,NULL),('phabricator:20150916.drydock.slotlocks.1.sql',1505229311,NULL),('phabricator:20150922.drydock.commands.1.sql',1505229311,NULL),('phabricator:20150923.drydock.resourceid.1.sql',1505229311,NULL),('phabricator:20150923.drydock.resourceid.2.sql',1505229311,NULL),('phabricator:20150923.drydock.resourceid.3.sql',1505229311,NULL),('phabricator:20150923.drydock.taskid.1.sql',1505229311,NULL),('phabricator:20150924.drydock.disable.1.sql',1505229311,NULL),('phabricator:20150924.drydock.status.1.sql',1505229311,NULL),('phabricator:20150928.drydock.rexpire.1.sql',1505229311,NULL),('phabricator:20150930.drydock.log.1.sql',1505229311,NULL),('phabricator:20151001.drydock.rname.1.sql',1505229312,NULL),('phabricator:20151002.dashboard.status.1.sql',1505229312,NULL),('phabricator:20151002.harbormaster.bparam.1.sql',1505229312,NULL),('phabricator:20151009.drydock.auth.1.sql',1505229312,NULL),('phabricator:20151010.drydock.auth.2.sql',1505229312,NULL),('phabricator:20151013.drydock.op.1.sql',1505229312,NULL),('phabricator:20151023.harborpolicy.1.sql',1505229312,NULL),('phabricator:20151023.harborpolicy.2.php',1505229312,NULL),('phabricator:20151023.patchduration.sql',1505229312,14707),('phabricator:20151030.harbormaster.initiator.sql',1505229312,20087),('phabricator:20151106.editengine.1.table.sql',1505229312,9727),('phabricator:20151106.editengine.2.xactions.sql',1505229312,7307),('phabricator:20151106.phame.post.mailkey.1.sql',1505229312,20376),('phabricator:20151106.phame.post.mailkey.2.php',1505229312,1318),('phabricator:20151107.phame.blog.mailkey.1.sql',1505229312,17775),('phabricator:20151107.phame.blog.mailkey.2.php',1505229312,704),('phabricator:20151108.phame.blog.joinpolicy.sql',1505229312,15522),('phabricator:20151108.xhpast.stderr.sql',1505229312,23616),('phabricator:20151109.phame.post.comments.1.sql',1505229312,8078),('phabricator:20151109.repository.coverage.1.sql',1505229312,893),('phabricator:20151109.xhpast.db.1.sql',1505229312,1560),('phabricator:20151109.xhpast.db.2.sql',1505229312,558),('phabricator:20151110.daemonenvhash.sql',1505229312,35993),('phabricator:20151111.phame.blog.archive.1.sql',1505229312,19773),('phabricator:20151111.phame.blog.archive.2.sql',1505229312,403),('phabricator:20151112.herald.edge.sql',1505229312,14166),('phabricator:20151116.owners.edge.sql',1505229312,13334),('phabricator:20151128.phame.blog.picture.1.sql',1505229312,16713),('phabricator:20151130.phurl.mailkey.1.sql',1505229312,18587),('phabricator:20151130.phurl.mailkey.2.php',1505229312,1132),('phabricator:20151202.versioneddraft.1.sql',1505229312,10406),('phabricator:20151207.editengine.1.sql',1505229312,80862),('phabricator:20151210.land.1.refphid.sql',1505229312,14814),('phabricator:20151210.land.2.refphid.php',1505229312,561),('phabricator:20151215.phame.1.autotitle.sql',1505229312,21908),('phabricator:20151218.key.1.keyphid.sql',1505229312,19006),('phabricator:20151218.key.2.keyphid.php',1505229312,391),('phabricator:20151219.proj.01.prislug.sql',1505229312,23570),('phabricator:20151219.proj.02.prislugkey.sql',1505229312,15523),('phabricator:20151219.proj.03.copyslug.sql',1505229312,373),('phabricator:20151219.proj.04.dropslugkey.sql',1505229312,8731),('phabricator:20151219.proj.05.dropslug.sql',1505229312,21708),('phabricator:20151219.proj.06.defaultpolicy.php',1505229312,915),('phabricator:20151219.proj.07.viewnull.sql',1505229312,14940),('phabricator:20151219.proj.08.editnull.sql',1505229312,12472),('phabricator:20151219.proj.09.joinnull.sql',1505229312,12507),('phabricator:20151219.proj.10.subcolumns.sql',1505229312,147026),('phabricator:20151219.proj.11.subprojectphids.sql',1505229312,28646),('phabricator:20151221.search.1.version.sql',1505229312,13333),('phabricator:20151221.search.2.ownersngrams.sql',1505229312,8185),('phabricator:20151221.search.3.reindex.php',1505229312,451),('phabricator:20151223.proj.01.paths.sql',1505229312,22899),('phabricator:20151223.proj.02.depths.sql',1505229312,31535),('phabricator:20151223.proj.03.pathkey.sql',1505229312,13308),('phabricator:20151223.proj.04.keycol.sql',1505229312,27422),('phabricator:20151223.proj.05.updatekeys.php',1505229312,365),('phabricator:20151223.proj.06.uniq.sql',1505229312,13132),('phabricator:20151226.reop.1.sql',1505229312,17967),('phabricator:20151227.proj.01.materialize.sql',1505229312,417),('phabricator:20151231.proj.01.icon.php',1505229312,1594),('phabricator:20160102.badges.award.sql',1505229313,10025),('phabricator:20160110.repo.01.slug.sql',1505229313,31100),('phabricator:20160110.repo.02.slug.php',1505229313,476),('phabricator:20160111.repo.01.slugx.sql',1505229313,551),('phabricator:20160112.repo.01.uri.sql',1505229313,8069),('phabricator:20160112.repo.02.uri.index.php',1505229313,68),('phabricator:20160113.propanel.1.storage.sql',1505229313,7292),('phabricator:20160113.propanel.2.xaction.sql',1505229313,7204),('phabricator:20160119.project.1.silence.sql',1505229313,474),('phabricator:20160122.project.1.boarddefault.php',1505229313,779),('phabricator:20160124.people.1.icon.sql',1505229313,12923),('phabricator:20160124.people.2.icondefault.sql',1505229313,422),('phabricator:20160128.repo.1.pull.sql',1505229313,8863),('phabricator:20160201.revision.properties.1.sql',1505229313,16179),('phabricator:20160201.revision.properties.2.sql',1505229313,378),('phabricator:20160202.board.1.proxy.sql',1505229313,19176),('phabricator:20160202.ipv6.1.sql',1505229313,25051),('phabricator:20160202.ipv6.2.php',1505229313,1285),('phabricator:20160206.cover.1.sql',1505229313,27640),('phabricator:20160208.task.1.sql',1505229313,60422),('phabricator:20160208.task.2.sql',1505229313,58138),('phabricator:20160208.task.3.sql',1505229313,46890),('phabricator:20160212.proj.1.sql',1505229313,34169),('phabricator:20160212.proj.2.sql',1505229313,344),('phabricator:20160215.owners.policy.1.sql',1505229313,17217),('phabricator:20160215.owners.policy.2.sql',1505229313,15547),('phabricator:20160215.owners.policy.3.sql',1505229313,405),('phabricator:20160215.owners.policy.4.sql',1505229313,359),('phabricator:20160218.callsigns.1.sql',1505229313,11296),('phabricator:20160221.almanac.1.devicen.sql',1505229313,6896),('phabricator:20160221.almanac.2.devicei.php',1505229313,1178),('phabricator:20160221.almanac.3.servicen.sql',1505229313,6698),('phabricator:20160221.almanac.4.servicei.php',1505229313,600),('phabricator:20160221.almanac.5.networkn.sql',1505229313,6506),('phabricator:20160221.almanac.6.networki.php',1505229313,941),('phabricator:20160221.almanac.7.namespacen.sql',1505229313,7199),('phabricator:20160221.almanac.8.namespace.sql',1505229313,7093),('phabricator:20160221.almanac.9.namespacex.sql',1505229313,6710),('phabricator:20160222.almanac.1.properties.php',1505229313,1060),('phabricator:20160223.almanac.1.bound.sql',1505229313,17026),('phabricator:20160223.almanac.2.lockbind.sql',1505229313,375),('phabricator:20160223.almanac.3.devicelock.sql',1505229313,18835),('phabricator:20160223.almanac.4.servicelock.sql',1505229313,22200),('phabricator:20160223.paste.fileedges.php',1505229313,519),('phabricator:20160225.almanac.1.disablebinding.sql',1505229313,22641),('phabricator:20160225.almanac.2.stype.sql',1505229313,8017),('phabricator:20160225.almanac.3.stype.php',1505229313,427),('phabricator:20160227.harbormaster.1.plann.sql',1505229313,7807),('phabricator:20160227.harbormaster.2.plani.php',1505229313,378),('phabricator:20160303.drydock.1.bluen.sql',1505229313,6891),('phabricator:20160303.drydock.2.bluei.php',1505229313,396),('phabricator:20160303.drydock.3.edge.sql',1505229313,14275),('phabricator:20160308.nuance.01.disabled.sql',1505229313,16906),('phabricator:20160308.nuance.02.cursordata.sql',1505229313,8314),('phabricator:20160308.nuance.03.sourcen.sql',1505229313,6308),('phabricator:20160308.nuance.04.sourcei.php',1505229313,1217),('phabricator:20160308.nuance.05.sourcename.sql',1505229313,10566),('phabricator:20160308.nuance.06.label.sql',1505229313,19354),('phabricator:20160308.nuance.07.itemtype.sql',1505229313,27249),('phabricator:20160308.nuance.08.itemkey.sql',1505229313,20363),('phabricator:20160308.nuance.09.itemcontainer.sql',1505229313,24353),('phabricator:20160308.nuance.10.itemkeyu.sql',1505229313,376),('phabricator:20160308.nuance.11.requestor.sql',1505229313,12897),('phabricator:20160308.nuance.12.queue.sql',1505229313,19233),('phabricator:20160316.lfs.01.token.resource.sql',1505229313,16537),('phabricator:20160316.lfs.02.token.user.sql',1505229313,15671),('phabricator:20160316.lfs.03.token.properties.sql',1505229313,16678),('phabricator:20160316.lfs.04.token.default.sql',1505229313,377),('phabricator:20160317.lfs.01.ref.sql',1505229313,7480),('phabricator:20160321.nuance.01.taskbridge.sql',1505229313,30440),('phabricator:20160322.nuance.01.itemcommand.sql',1505229313,11935),('phabricator:20160323.badgemigrate.sql',1505229313,1027),('phabricator:20160329.nuance.01.requestor.sql',1505229313,1791),('phabricator:20160329.nuance.02.requestorsource.sql',1505229313,1816),('phabricator:20160329.nuance.03.requestorxaction.sql',1505229313,1772),('phabricator:20160329.nuance.04.requestorcomment.sql',1505229313,1425),('phabricator:20160330.badges.migratequality.sql',1505229313,11451),('phabricator:20160330.badges.qualityxaction.mig.sql',1505229313,1561),('phabricator:20160331.fund.comments.1.sql',1505229313,6923),('phabricator:20160404.oauth.1.xaction.sql',1505229313,8413),('phabricator:20160405.oauth.2.disable.sql',1505229313,15191),('phabricator:20160406.badges.ngrams.php',1505229313,578),('phabricator:20160406.badges.ngrams.sql',1505229313,7954),('phabricator:20160406.columns.1.php',1505229313,437),('phabricator:20160411.repo.1.version.sql',1505229313,6469),('phabricator:20160418.repouri.1.sql',1505229313,6484),('phabricator:20160418.repouri.2.sql',1505229314,23815),('phabricator:20160418.repoversion.1.sql',1505229314,15654),('phabricator:20160419.pushlog.1.sql',1505229314,25941),('phabricator:20160424.locks.1.sql',1505229314,20267),('phabricator:20160426.searchedge.sql',1505229314,17197),('phabricator:20160428.repo.1.urixaction.sql',1505229314,6462),('phabricator:20160503.repo.01.lpath.sql',1505229314,21613),('phabricator:20160503.repo.02.lpathkey.sql',1505229314,14346),('phabricator:20160503.repo.03.lpathmigrate.php',1505229314,414),('phabricator:20160503.repo.04.mirrormigrate.php',1505229314,485),('phabricator:20160503.repo.05.urimigrate.php',1505229314,311),('phabricator:20160510.repo.01.uriindex.php',1505229314,4235),('phabricator:20160513.owners.01.autoreview.sql',1505229314,16067),('phabricator:20160513.owners.02.autoreviewnone.sql',1505229314,365),('phabricator:20160516.owners.01.dominion.sql',1505229314,20175),('phabricator:20160516.owners.02.dominionstrong.sql',1505229314,423),('phabricator:20160517.oauth.01.edge.sql',1505229314,14825),('phabricator:20160518.ssh.01.activecol.sql',1505229314,15395),('phabricator:20160518.ssh.02.activeval.sql',1505229314,337),('phabricator:20160518.ssh.03.activekey.sql',1505229314,10601),('phabricator:20160519.ssh.01.xaction.sql',1505229314,7825),('phabricator:20160531.pref.01.xaction.sql',1505229314,7035),('phabricator:20160531.pref.02.datecreatecol.sql',1505229314,11831),('phabricator:20160531.pref.03.datemodcol.sql',1505229314,14881),('phabricator:20160531.pref.04.datecreateval.sql',1505229314,459),('phabricator:20160531.pref.05.datemodval.sql',1505229314,394),('phabricator:20160531.pref.06.phidcol.sql',1505229314,16492),('phabricator:20160531.pref.07.phidval.php',1505229314,744),('phabricator:20160601.user.01.cache.sql',1505229314,9486),('phabricator:20160601.user.02.copyprefs.php',1505229314,1253),('phabricator:20160601.user.03.removetime.sql',1505229314,23634),('phabricator:20160601.user.04.removetranslation.sql',1505229314,21819),('phabricator:20160601.user.05.removesex.sql',1505229314,23387),('phabricator:20160603.user.01.removedcenabled.sql',1505229314,21090),('phabricator:20160603.user.02.removedctab.sql',1505229314,25564),('phabricator:20160603.user.03.removedcvisible.sql',1505229314,19922),('phabricator:20160604.user.01.stringmailprefs.php',1505229314,494),('phabricator:20160604.user.02.removeimagecache.sql',1505229314,21502),('phabricator:20160605.user.01.prefnulluser.sql',1505229314,11987),('phabricator:20160605.user.02.prefbuiltin.sql',1505229314,11726),('phabricator:20160605.user.03.builtinunique.sql',1505229314,12112),('phabricator:20160616.phame.blog.header.1.sql',1505229314,16566),('phabricator:20160616.repo.01.oldref.sql',1505229314,8781),('phabricator:20160617.harbormaster.01.arelease.sql',1505229314,17884),('phabricator:20160618.phame.blog.subtitle.sql',1505229314,18739),('phabricator:20160620.phame.blog.parentdomain.2.sql',1505229314,15869),('phabricator:20160620.phame.blog.parentsite.1.sql',1505229314,16664),('phabricator:20160623.phame.blog.fulldomain.1.sql',1505229314,16500),('phabricator:20160623.phame.blog.fulldomain.2.sql',1505229314,397),('phabricator:20160623.phame.blog.fulldomain.3.sql',1505229314,396),('phabricator:20160706.phame.blog.parentdomain.2.sql',1505229314,16071),('phabricator:20160706.phame.blog.parentsite.1.sql',1505229314,16648),('phabricator:20160707.calendar.01.stub.sql',1505229314,16706),('phabricator:20160711.files.01.builtin.sql',1505229314,27703),('phabricator:20160711.files.02.builtinkey.sql',1505229314,11792),('phabricator:20160713.event.01.host.sql',1505229314,12444),('phabricator:20160715.event.01.alldayfrom.sql',1505229314,16604),('phabricator:20160715.event.02.alldayto.sql',1505229314,15977),('phabricator:20160715.event.03.allday.php',1505229314,56),('phabricator:20160720.calendar.invitetxn.php',1505229314,589),('phabricator:20160721.pack.01.pub.sql',1505229314,7385),('phabricator:20160721.pack.02.pubxaction.sql',1505229314,6493),('phabricator:20160721.pack.03.edge.sql',1505229314,12007),('phabricator:20160721.pack.04.pkg.sql',1505229314,6712),('phabricator:20160721.pack.05.pkgxaction.sql',1505229314,6539),('phabricator:20160721.pack.06.version.sql',1505229314,6797),('phabricator:20160721.pack.07.versionxaction.sql',1505229314,6317),('phabricator:20160722.pack.01.pubngrams.sql',1505229314,6296),('phabricator:20160722.pack.02.pkgngrams.sql',1505229314,6651),('phabricator:20160722.pack.03.versionngrams.sql',1505229314,7330),('phabricator:20160810.commit.01.summarylength.sql',1505229314,11365),('phabricator:20160824.connectionlog.sql',1505229314,1280),('phabricator:20160824.repohint.01.hint.sql',1505229314,6434),('phabricator:20160824.repohint.02.movebad.php',1505229314,428),('phabricator:20160824.repohint.03.nukebad.sql',1505229314,1191),('phabricator:20160825.ponder.sql',1505229314,709),('phabricator:20160829.pastebin.01.language.sql',1505229314,10111),('phabricator:20160829.pastebin.02.language.sql',1505229314,567),('phabricator:20160913.conpherence.topic.1.sql',1505229314,12573),('phabricator:20160919.repo.messagecount.sql',1505229314,14535),('phabricator:20160919.repo.messagedefault.sql',1505229314,7168),('phabricator:20160921.fileexternalrequest.sql',1505229314,6804),('phabricator:20160927.phurl.ngrams.php',1505229314,378),('phabricator:20160927.phurl.ngrams.sql',1505229314,6850),('phabricator:20160928.repo.messagecount.sql',1505229314,396),('phabricator:20160928.tokentoken.sql',1505229314,6945),('phabricator:20161003.cal.01.utcepoch.sql',1505229315,50814),('phabricator:20161003.cal.02.parameters.sql',1505229315,18699),('phabricator:20161004.cal.01.noepoch.php',1505229315,1559),('phabricator:20161005.cal.01.rrules.php',1505229315,313),('phabricator:20161005.cal.02.export.sql',1505229315,7026),('phabricator:20161005.cal.03.exportxaction.sql',1505229315,7513),('phabricator:20161005.conpherence.image.1.sql',1505229315,12660),('phabricator:20161005.conpherence.image.2.php',1505229315,62),('phabricator:20161011.conpherence.ngrams.php',1505229315,320),('phabricator:20161011.conpherence.ngrams.sql',1505229315,8482),('phabricator:20161012.cal.01.import.sql',1505229315,8265),('phabricator:20161012.cal.02.importxaction.sql',1505229315,6919),('phabricator:20161012.cal.03.eventimport.sql',1505229315,76721),('phabricator:20161013.cal.01.importlog.sql',1505229315,8173),('phabricator:20161016.conpherence.imagephids.sql',1505229315,14268),('phabricator:20161025.phortune.contact.1.sql',1505229315,53977),('phabricator:20161025.phortune.merchant.image.1.sql',1505229315,29422),('phabricator:20161026.calendar.01.importtriggers.sql',1505229315,47454),('phabricator:20161027.calendar.01.externalinvitee.sql',1505229315,8092),('phabricator:20161029.phortune.invoice.1.sql',1505229315,28242),('phabricator:20161031.calendar.01.seriesparent.sql',1505229315,18636),('phabricator:20161031.calendar.02.notifylog.sql',1505229315,7982),('phabricator:20161101.calendar.01.noholiday.sql',1505229315,1735),('phabricator:20161101.calendar.02.removecolumns.sql',1505229315,105662),('phabricator:20161104.calendar.01.availability.sql',1505229315,18003),('phabricator:20161104.calendar.02.availdefault.sql',1505229315,442),('phabricator:20161115.phamepost.01.subtitle.sql',1505229315,17700),('phabricator:20161115.phamepost.02.header.sql',1505229315,21438),('phabricator:20161121.cluster.01.hoststate.sql',1505229315,9268),('phabricator:20161124.search.01.stopwords.sql',1505229315,6479),('phabricator:20161125.search.01.stemmed.sql',1505229315,7807),('phabricator:20161130.search.01.manual.sql',1505229315,7039),('phabricator:20161130.search.02.rebuild.php',1505229315,1862),('phabricator:20161210.dashboards.01.author.sql',1505229315,12501),('phabricator:20161210.dashboards.02.author.php',1505229315,916),('phabricator:20161211.menu.01.itemkey.sql',1505229315,8485),('phabricator:20161211.menu.02.itemprops.sql',1505229315,6725),('phabricator:20161211.menu.03.order.sql',1505229315,6170),('phabricator:20161212.dashboardpanel.01.author.sql',1505229315,13290),('phabricator:20161212.dashboardpanel.02.author.php',1505229315,735),('phabricator:20161212.dashboards.01.icon.sql',1505229315,15462),('phabricator:20161213.diff.01.hunks.php',1505229315,731),('phabricator:20161216.dashboard.ngram.01.sql',1505229315,16242),('phabricator:20161216.dashboard.ngram.02.php',1505229315,527),('phabricator:20170106.menu.01.customphd.sql',1505229315,12809),('phabricator:20170109.diff.01.commit.sql',1505229315,20022),('phabricator:20170119.menuitem.motivator.01.php',1505229315,252),('phabricator:20170131.dashboard.personal.01.php',1505229315,814),('phabricator:20170301.subtype.01.col.sql',1505229315,16520),('phabricator:20170301.subtype.02.default.sql',1505229315,416),('phabricator:20170301.subtype.03.taskcol.sql',1505229315,31002),('phabricator:20170301.subtype.04.taskdefault.sql',1505229315,355),('phabricator:20170303.people.01.avatar.sql',1505229315,44589),('phabricator:20170313.reviewers.01.sql',1505229315,13846),('phabricator:20170316.rawfiles.01.php',1505229315,1162),('phabricator:20170320.reviewers.01.lastaction.sql',1505229315,14750),('phabricator:20170320.reviewers.02.lastcomment.sql',1505229315,16419),('phabricator:20170320.reviewers.03.migrate.php',1505229315,855),('phabricator:20170322.reviewers.04.actor.sql',1505229315,16195),('phabricator:20170328.reviewers.01.void.sql',1505229315,16793),('phabricator:20170404.files.retroactive-content-hash.sql',1505229315,16177),('phabricator:20170406.hmac.01.keystore.sql',1505229315,6617),('phabricator:20170410.calendar.01.repair.php',1505229315,524),('phabricator:20170412.conpherence.01.picturecrop.sql',1505229315,325),('phabricator:20170413.conpherence.01.recentparty.sql',1505229315,12114),('phabricator:20170417.files.ngrams.sql',1505229315,8328),('phabricator:20170418.1.application.01.xaction.sql',1505229315,7862),('phabricator:20170418.1.application.02.edge.sql',1505229315,13057),('phabricator:20170418.files.isDeleted.sql',1505229316,33550),('phabricator:20170419.app.01.table.sql',1505229316,12496),('phabricator:20170419.thread.01.behind.sql',1505229316,18329),('phabricator:20170419.thread.02.status.sql',1505229316,37811),('phabricator:20170419.thread.03.touched.sql',1505229316,20278),('phabricator:20170424.user.01.verify.php',1505229316,369),('phabricator:20170427.owners.01.long.sql',1505229316,23690),('phabricator:20170504.1.slowvote.shuffle.sql',1505229316,14509),('phabricator:20170522.nuance.01.itemkey.sql',1505229316,20530),('phabricator:20170524.nuance.01.command.sql',1505229316,44533),('phabricator:20170524.nuance.02.commandstatus.sql',1505229316,14130),('phabricator:20170526.dropdifferentialdrafts.sql',1505229316,1085),('phabricator:20170526.milestones.php',1505229316,380),('phabricator:20170528.maniphestdupes.php',1505229316,307),('phabricator:20170612.repository.image.01.sql',1505229316,25441),('phabricator:20170614.taskstatus.sql',1505229316,19933),('phabricator:20170725.legalpad.date.01.sql',1505229316,794),('phabricator:20170811.differential.01.status.php',1505229316,380),('phabricator:20170811.differential.02.modernstatus.sql',1505229316,854),('phabricator:20170811.differential.03.modernxaction.php',1505229316,988),('phabricator:20170814.search.01.qconfig.sql',1505229316,6870),('phabricator:20170820.phame.01.post.views.sql',1505229316,16670),('phabricator:20170820.phame.02.post.views.sql',1505229316,349),('phabricator:20170824.search.01.saved.php',1505229316,597),('phabricator:20170825.phame.01.post.views.sql',1505229316,20405),('phabricator:20170828.ferret.01.taskdoc.sql',1505229316,7658),('phabricator:20170828.ferret.02.taskfield.sql',1505229316,6337),('phabricator:20170828.ferret.03.taskngrams.sql',1505229316,6695),('phabricator:20170830.ferret.01.unique.sql',1505229316,13328),('phabricator:20170830.ferret.02.term.sql',1505229316,15215),('phabricator:20170905.ferret.01.diff.doc.sql',1505229316,10278),('phabricator:20170905.ferret.02.diff.field.sql',1505229316,8206),('phabricator:20170905.ferret.03.diff.ngrams.sql',1505229316,7430),('phabricator:20170907.ferret.01.user.doc.sql',1505229316,6356),('phabricator:20170907.ferret.02.user.field.sql',1505229316,6335),('phabricator:20170907.ferret.03.user.ngrams.sql',1505229316,6307),('phabricator:20170907.ferret.04.fund.doc.sql',1505229316,6319),('phabricator:20170907.ferret.05.fund.field.sql',1505229316,5897),('phabricator:20170907.ferret.06.fund.ngrams.sql',1505229316,6511),('phabricator:20170907.ferret.07.passphrase.doc.sql',1505229316,5758),('phabricator:20170907.ferret.08.passphrase.field.sql',1505229316,6319),('phabricator:20170907.ferret.09.passphrase.ngrams.sql',1505229316,7128),('phabricator:20170907.ferret.10.owners.doc.sql',1505229316,6814),('phabricator:20170907.ferret.11.owners.field.sql',1505229316,6241),('phabricator:20170907.ferret.12.owners.ngrams.sql',1505229316,6010),('phabricator:20170907.ferret.13.blog.doc.sql',1505229316,6643),('phabricator:20170907.ferret.14.blog.field.sql',1505229316,7260),('phabricator:20170907.ferret.15.blog.ngrams.sql',1505229316,6603),('phabricator:20170907.ferret.16.post.doc.sql',1505229316,6246),('phabricator:20170907.ferret.17.post.field.sql',1505229316,6483),('phabricator:20170907.ferret.18.post.ngrams.sql',1505229316,6941),('phabricator:20170907.ferret.19.project.doc.sql',1505229316,5891),('phabricator:20170907.ferret.20.project.field.sql',1505229316,6006),('phabricator:20170907.ferret.21.project.ngrams.sql',1505229316,6046),('phabricator:20170907.ferret.22.phriction.doc.sql',1505229316,7390),('phabricator:20170907.ferret.23.phriction.field.sql',1505229316,5842),('phabricator:20170907.ferret.24.phriction.ngrams.sql',1505229316,6742),('phabricator:20170907.ferret.25.event.doc.sql',1505229316,6395),('phabricator:20170907.ferret.26.event.field.sql',1505229316,6675),('phabricator:20170907.ferret.27.event.ngrams.sql',1505229316,6619),('phabricator:20170907.ferret.28.mock.doc.sql',1505229316,7358),('phabricator:20170907.ferret.29.mock.field.sql',1505229316,5954),('phabricator:20170907.ferret.30.mock.ngrams.sql',1505229316,6756),('phabricator:20170907.ferret.31.repo.doc.sql',1505229316,6597),('phabricator:20170907.ferret.32.repo.field.sql',1505229316,7493),('phabricator:20170907.ferret.33.repo.ngrams.sql',1505229316,6181),('phabricator:20170907.ferret.34.commit.doc.sql',1505229316,6161),('phabricator:20170907.ferret.35.commit.field.sql',1505229316,6439),('phabricator:20170907.ferret.36.commit.ngrams.sql',1505229316,7055),('phabricator:20170912.ferret.01.activity.php',1505229316,396),('phabricator:daemonstatus.sql',1505229299,NULL),('phabricator:daemonstatuskey.sql',1505229300,NULL),('phabricator:daemontaskarchive.sql',1505229300,NULL),('phabricator:db.almanac',1505229294,NULL),('phabricator:db.application',1505229294,NULL),('phabricator:db.audit',1505229294,NULL),('phabricator:db.auth',1505229294,NULL),('phabricator:db.badges',1505229294,NULL),('phabricator:db.cache',1505229294,NULL),('phabricator:db.calendar',1505229294,NULL),('phabricator:db.chatlog',1505229294,NULL),('phabricator:db.conduit',1505229294,NULL),('phabricator:db.config',1505229294,NULL),('phabricator:db.conpherence',1505229294,NULL),('phabricator:db.countdown',1505229294,NULL),('phabricator:db.daemon',1505229294,NULL),('phabricator:db.dashboard',1505229294,NULL),('phabricator:db.differential',1505229294,NULL),('phabricator:db.diviner',1505229294,NULL),('phabricator:db.doorkeeper',1505229294,NULL),('phabricator:db.draft',1505229294,NULL),('phabricator:db.drydock',1505229294,NULL),('phabricator:db.fact',1505229294,NULL),('phabricator:db.feed',1505229294,NULL),('phabricator:db.file',1505229294,NULL),('phabricator:db.flag',1505229294,NULL),('phabricator:db.fund',1505229294,NULL),('phabricator:db.harbormaster',1505229294,NULL),('phabricator:db.herald',1505229294,NULL),('phabricator:db.legalpad',1505229294,NULL),('phabricator:db.maniphest',1505229294,NULL),('phabricator:db.meta_data',1505229294,NULL),('phabricator:db.metamta',1505229294,NULL),('phabricator:db.multimeter',1505229294,NULL),('phabricator:db.nuance',1505229294,NULL),('phabricator:db.oauth_server',1505229294,NULL),('phabricator:db.owners',1505229294,NULL),('phabricator:db.packages',1505229294,NULL),('phabricator:db.passphrase',1505229294,NULL),('phabricator:db.pastebin',1505229294,NULL),('phabricator:db.phame',1505229294,NULL),('phabricator:db.phlux',1505229294,NULL),('phabricator:db.pholio',1505229294,NULL),('phabricator:db.phortune',1505229294,NULL),('phabricator:db.phragment',1505229294,NULL),('phabricator:db.phrequent',1505229294,NULL),('phabricator:db.phriction',1505229294,NULL),('phabricator:db.phurl',1505229294,NULL),('phabricator:db.policy',1505229294,NULL),('phabricator:db.ponder',1505229294,NULL),('phabricator:db.project',1505229294,NULL),('phabricator:db.releeph',1505229294,NULL),('phabricator:db.repository',1505229294,NULL),('phabricator:db.search',1505229294,NULL),('phabricator:db.slowvote',1505229294,NULL),('phabricator:db.spaces',1505229294,NULL),('phabricator:db.system',1505229294,NULL),('phabricator:db.timeline',1505229294,NULL),('phabricator:db.token',1505229294,NULL),('phabricator:db.user',1505229294,NULL),('phabricator:db.worker',1505229294,NULL),('phabricator:db.xhpast',1505229294,NULL),('phabricator:db.xhpastview',1505229294,NULL),('phabricator:db.xhprof',1505229294,NULL),('phabricator:differentialbookmarks.sql',1505229299,NULL),('phabricator:draft-metadata.sql',1505229300,NULL),('phabricator:dropfileproxyimage.sql',1505229300,NULL),('phabricator:drydockresoucetype.sql',1505229300,NULL),('phabricator:drydocktaskid.sql',1505229300,NULL),('phabricator:edgetype.sql',1505229300,NULL),('phabricator:emailtable.sql',1505229299,NULL),('phabricator:emailtableport.sql',1505229299,NULL),('phabricator:emailtableremove.sql',1505229299,NULL),('phabricator:fact-raw.sql',1505229299,NULL),('phabricator:harbormasterobject.sql',1505229299,NULL),('phabricator:holidays.sql',1505229299,NULL),('phabricator:ldapinfo.sql',1505229299,NULL),('phabricator:legalpad-mailkey-populate.php',1505229302,NULL),('phabricator:legalpad-mailkey.sql',1505229302,NULL),('phabricator:liskcounters-task.sql',1505229300,NULL),('phabricator:liskcounters.php',1505229300,NULL),('phabricator:liskcounters.sql',1505229300,NULL),('phabricator:maniphestxcache.sql',1505229299,NULL),('phabricator:markupcache.sql',1505229299,NULL),('phabricator:migrate-differential-dependencies.php',1505229299,NULL),('phabricator:migrate-maniphest-dependencies.php',1505229299,NULL),('phabricator:migrate-maniphest-revisions.php',1505229299,NULL),('phabricator:migrate-project-edges.php',1505229299,NULL),('phabricator:owners-exclude.sql',1505229300,NULL),('phabricator:pastepolicy.sql',1505229300,NULL),('phabricator:phameblog.sql',1505229299,NULL),('phabricator:phamedomain.sql',1505229300,NULL),('phabricator:phameoneblog.sql',1505229300,NULL),('phabricator:phamepolicy.sql',1505229300,NULL),('phabricator:phiddrop.sql',1505229299,NULL),('phabricator:pholio.sql',1505229300,NULL),('phabricator:policy-project.sql',1505229300,NULL),('phabricator:ponder-comments.sql',1505229300,NULL),('phabricator:ponder-mailkey-populate.php',1505229300,NULL),('phabricator:ponder-mailkey.sql',1505229300,NULL),('phabricator:ponder.sql',1505229299,NULL),('phabricator:releeph.sql',1505229301,NULL),('phabricator:repository-lint.sql',1505229300,NULL),('phabricator:statustxt.sql',1505229300,NULL),('phabricator:symbolcontexts.sql',1505229299,NULL),('phabricator:testdatabase.sql',1505229299,NULL),('phabricator:threadtopic.sql',1505229299,NULL),('phabricator:userstatus.sql',1505229299,NULL),('phabricator:usertranslation.sql',1505229299,NULL),('phabricator:xhprof.sql',1505229300,NULL); CREATE DATABASE /*!32312 IF NOT EXISTS*/ `{$NAMESPACE}_metamta` /*!40100 DEFAULT CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} */; @@ -2139,8 +2236,7 @@ CREATE TABLE `owners_owner` ( CREATE TABLE `owners_package` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `phid` varbinary(64) NOT NULL, - `name` varchar(128) CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, - `originalName` varchar(255) COLLATE {$COLLATE_TEXT} NOT NULL, + `name` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, `description` longtext COLLATE {$COLLATE_TEXT} NOT NULL, `primaryOwnerPHID` varbinary(64) DEFAULT NULL, `auditingEnabled` tinyint(1) NOT NULL DEFAULT '0', @@ -2154,6 +2250,42 @@ CREATE TABLE `owners_package` ( UNIQUE KEY `key_phid` (`phid`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +CREATE TABLE `owners_package_fdocument` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `objectPHID` varbinary(64) NOT NULL, + `isClosed` tinyint(1) NOT NULL, + `authorPHID` varbinary(64) DEFAULT NULL, + `ownerPHID` varbinary(64) DEFAULT NULL, + `epochCreated` int(10) unsigned NOT NULL, + `epochModified` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_object` (`objectPHID`), + KEY `key_author` (`authorPHID`), + KEY `key_owner` (`ownerPHID`), + KEY `key_created` (`epochCreated`), + KEY `key_modified` (`epochModified`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `owners_package_ffield` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `fieldKey` varchar(4) COLLATE {$COLLATE_TEXT} NOT NULL, + `rawCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `termCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `normalCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_documentfield` (`documentID`,`fieldKey`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `owners_package_fngrams` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `ngram` char(3) COLLATE {$COLLATE_TEXT} NOT NULL, + PRIMARY KEY (`id`), + KEY `key_ngram` (`ngram`,`documentID`), + KEY `key_object` (`documentID`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + CREATE TABLE `owners_packagetransaction` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `phid` varbinary(64) NOT NULL, @@ -2319,6 +2451,42 @@ CREATE TABLE `phame_blog` ( UNIQUE KEY `domain` (`domain`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +CREATE TABLE `phame_blog_fdocument` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `objectPHID` varbinary(64) NOT NULL, + `isClosed` tinyint(1) NOT NULL, + `authorPHID` varbinary(64) DEFAULT NULL, + `ownerPHID` varbinary(64) DEFAULT NULL, + `epochCreated` int(10) unsigned NOT NULL, + `epochModified` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_object` (`objectPHID`), + KEY `key_author` (`authorPHID`), + KEY `key_owner` (`ownerPHID`), + KEY `key_created` (`epochCreated`), + KEY `key_modified` (`epochModified`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `phame_blog_ffield` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `fieldKey` varchar(4) COLLATE {$COLLATE_TEXT} NOT NULL, + `rawCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `termCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `normalCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_documentfield` (`documentID`,`fieldKey`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `phame_blog_fngrams` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `ngram` char(3) COLLATE {$COLLATE_TEXT} NOT NULL, + PRIMARY KEY (`id`), + KEY `key_ngram` (`ngram`,`documentID`), + KEY `key_object` (`documentID`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + CREATE TABLE `phame_blogtransaction` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `phid` varbinary(64) NOT NULL, @@ -2361,6 +2529,42 @@ CREATE TABLE `phame_post` ( KEY `bloggerPosts` (`bloggerPHID`,`visibility`,`datePublished`,`id`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +CREATE TABLE `phame_post_fdocument` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `objectPHID` varbinary(64) NOT NULL, + `isClosed` tinyint(1) NOT NULL, + `authorPHID` varbinary(64) DEFAULT NULL, + `ownerPHID` varbinary(64) DEFAULT NULL, + `epochCreated` int(10) unsigned NOT NULL, + `epochModified` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_object` (`objectPHID`), + KEY `key_author` (`authorPHID`), + KEY `key_owner` (`ownerPHID`), + KEY `key_created` (`epochCreated`), + KEY `key_modified` (`epochModified`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `phame_post_ffield` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `fieldKey` varchar(4) COLLATE {$COLLATE_TEXT} NOT NULL, + `rawCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `termCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `normalCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_documentfield` (`documentID`,`fieldKey`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `phame_post_fngrams` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `ngram` char(3) COLLATE {$COLLATE_TEXT} NOT NULL, + PRIMARY KEY (`id`), + KEY `key_ngram` (`ngram`,`documentID`), + KEY `key_object` (`documentID`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + CREATE TABLE `phame_posttransaction` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `phid` varbinary(64) NOT NULL, @@ -2457,6 +2661,42 @@ CREATE TABLE `phriction_document` ( UNIQUE KEY `depth` (`depth`,`slug`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +CREATE TABLE `phriction_document_fdocument` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `objectPHID` varbinary(64) NOT NULL, + `isClosed` tinyint(1) NOT NULL, + `authorPHID` varbinary(64) DEFAULT NULL, + `ownerPHID` varbinary(64) DEFAULT NULL, + `epochCreated` int(10) unsigned NOT NULL, + `epochModified` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_object` (`objectPHID`), + KEY `key_author` (`authorPHID`), + KEY `key_owner` (`ownerPHID`), + KEY `key_created` (`epochCreated`), + KEY `key_modified` (`epochModified`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `phriction_document_ffield` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `fieldKey` varchar(4) COLLATE {$COLLATE_TEXT} NOT NULL, + `rawCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `termCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `normalCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_documentfield` (`documentID`,`fieldKey`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `phriction_document_fngrams` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `ngram` char(3) COLLATE {$COLLATE_TEXT} NOT NULL, + PRIMARY KEY (`id`), + KEY `key_ngram` (`ngram`,`documentID`), + KEY `key_object` (`documentID`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + CREATE TABLE `phriction_transaction` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `phid` varbinary(64) NOT NULL, @@ -2643,6 +2883,42 @@ CREATE TABLE `project_datasourcetoken` ( KEY `projectID` (`projectID`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +CREATE TABLE `project_project_fdocument` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `objectPHID` varbinary(64) NOT NULL, + `isClosed` tinyint(1) NOT NULL, + `authorPHID` varbinary(64) DEFAULT NULL, + `ownerPHID` varbinary(64) DEFAULT NULL, + `epochCreated` int(10) unsigned NOT NULL, + `epochModified` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_object` (`objectPHID`), + KEY `key_author` (`authorPHID`), + KEY `key_owner` (`ownerPHID`), + KEY `key_created` (`epochCreated`), + KEY `key_modified` (`epochModified`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `project_project_ffield` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `fieldKey` varchar(4) COLLATE {$COLLATE_TEXT} NOT NULL, + `rawCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `termCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `normalCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_documentfield` (`documentID`,`fieldKey`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `project_project_fngrams` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `ngram` char(3) COLLATE {$COLLATE_TEXT} NOT NULL, + PRIMARY KEY (`id`), + KEY `key_ngram` (`ngram`,`documentID`), + KEY `key_object` (`documentID`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + CREATE TABLE `project_slug` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `projectPHID` varbinary(64) NOT NULL, @@ -2715,6 +2991,7 @@ CREATE TABLE `repository` ( `spacePHID` varbinary(64) DEFAULT NULL, `repositorySlug` varchar(64) CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} DEFAULT NULL, `localPath` varchar(128) COLLATE {$COLLATE_TEXT} DEFAULT NULL, + `profileImagePHID` varbinary(64) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `key_phid` (`phid`), UNIQUE KEY `callsign` (`callsign`), @@ -2769,6 +3046,42 @@ CREATE TABLE `repository_commit` ( KEY `key_author` (`authorPHID`,`epoch`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +CREATE TABLE `repository_commit_fdocument` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `objectPHID` varbinary(64) NOT NULL, + `isClosed` tinyint(1) NOT NULL, + `authorPHID` varbinary(64) DEFAULT NULL, + `ownerPHID` varbinary(64) DEFAULT NULL, + `epochCreated` int(10) unsigned NOT NULL, + `epochModified` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_object` (`objectPHID`), + KEY `key_author` (`authorPHID`), + KEY `key_owner` (`ownerPHID`), + KEY `key_created` (`epochCreated`), + KEY `key_modified` (`epochModified`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `repository_commit_ffield` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `fieldKey` varchar(4) COLLATE {$COLLATE_TEXT} NOT NULL, + `rawCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `termCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `normalCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_documentfield` (`documentID`,`fieldKey`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `repository_commit_fngrams` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `ngram` char(3) COLLATE {$COLLATE_TEXT} NOT NULL, + PRIMARY KEY (`id`), + KEY `key_ngram` (`ngram`,`documentID`), + KEY `key_object` (`documentID`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + CREATE TABLE `repository_commitdata` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `commitID` int(10) unsigned NOT NULL, @@ -2963,6 +3276,42 @@ CREATE TABLE `repository_refcursor` ( KEY `key_cursor` (`repositoryPHID`,`refType`,`refNameHash`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +CREATE TABLE `repository_repository_fdocument` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `objectPHID` varbinary(64) NOT NULL, + `isClosed` tinyint(1) NOT NULL, + `authorPHID` varbinary(64) DEFAULT NULL, + `ownerPHID` varbinary(64) DEFAULT NULL, + `epochCreated` int(10) unsigned NOT NULL, + `epochModified` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_object` (`objectPHID`), + KEY `key_author` (`authorPHID`), + KEY `key_owner` (`ownerPHID`), + KEY `key_created` (`epochCreated`), + KEY `key_modified` (`epochModified`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `repository_repository_ffield` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `fieldKey` varchar(4) COLLATE {$COLLATE_TEXT} NOT NULL, + `rawCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `termCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `normalCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_documentfield` (`documentID`,`fieldKey`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `repository_repository_fngrams` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `ngram` char(3) COLLATE {$COLLATE_TEXT} NOT NULL, + PRIMARY KEY (`id`), + KEY `key_ngram` (`ngram`,`documentID`), + KEY `key_object` (`documentID`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + CREATE TABLE `repository_statusmessage` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `repositoryID` int(10) unsigned NOT NULL, @@ -3128,7 +3477,7 @@ CREATE TABLE `search_documentfield` ( `stemmedCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT}, KEY `phid` (`phid`), FULLTEXT KEY `key_corpus` (`corpus`,`stemmedCorpus`) -) ENGINE=MyISAM DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; CREATE TABLE `search_documentrelationship` ( `phid` varbinary(64) NOT NULL, @@ -3209,6 +3558,17 @@ CREATE TABLE `search_namedquery` ( UNIQUE KEY `key_userquery` (`userPHID`,`engineClassName`,`queryKey`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +CREATE TABLE `search_namedqueryconfig` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `engineClassName` varchar(128) COLLATE {$COLLATE_TEXT} NOT NULL, + `scopePHID` varbinary(64) NOT NULL, + `properties` longtext COLLATE {$COLLATE_TEXT} NOT NULL, + `dateCreated` int(10) unsigned NOT NULL, + `dateModified` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_scope` (`engineClassName`,`scopePHID`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + CREATE TABLE `search_profilepanelconfiguration` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `phid` varbinary(64) NOT NULL, @@ -3314,7 +3674,7 @@ CREATE TABLE `slowvote_poll` ( `phid` varbinary(64) NOT NULL, `authorPHID` varbinary(64) NOT NULL, `responseVisibility` int(10) unsigned NOT NULL, - `shuffle` int(10) unsigned NOT NULL, + `shuffle` tinyint(1) NOT NULL DEFAULT '0', `method` int(10) unsigned NOT NULL, `dateCreated` int(10) unsigned NOT NULL, `dateModified` int(10) unsigned NOT NULL, @@ -3627,6 +3987,42 @@ CREATE TABLE `user_transaction` ( KEY `key_object` (`objectPHID`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +CREATE TABLE `user_user_fdocument` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `objectPHID` varbinary(64) NOT NULL, + `isClosed` tinyint(1) NOT NULL, + `authorPHID` varbinary(64) DEFAULT NULL, + `ownerPHID` varbinary(64) DEFAULT NULL, + `epochCreated` int(10) unsigned NOT NULL, + `epochModified` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_object` (`objectPHID`), + KEY `key_author` (`authorPHID`), + KEY `key_owner` (`ownerPHID`), + KEY `key_created` (`epochCreated`), + KEY `key_modified` (`epochModified`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `user_user_ffield` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `fieldKey` varchar(4) COLLATE {$COLLATE_TEXT} NOT NULL, + `rawCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `termCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `normalCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_documentfield` (`documentID`,`fieldKey`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `user_user_fngrams` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `ngram` char(3) COLLATE {$COLLATE_TEXT} NOT NULL, + PRIMARY KEY (`id`), + KEY `key_ngram` (`ngram`,`documentID`), + KEY `key_object` (`documentID`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + CREATE DATABASE /*!32312 IF NOT EXISTS*/ `{$NAMESPACE}_worker` /*!40100 DEFAULT CHARACTER SET {$CHARSET} COLLATE {$COLLATE_TEXT} */; USE `{$NAMESPACE}_worker`; @@ -3956,7 +4352,7 @@ CREATE TABLE `ponder_question` ( KEY `authorPHID` (`authorPHID`), KEY `status` (`status`), KEY `key_space` (`spacePHID`) -) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; CREATE TABLE `ponder_questiontransaction` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, @@ -4076,6 +4472,42 @@ CREATE TABLE `pholio_mock` ( KEY `key_space` (`spacePHID`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +CREATE TABLE `pholio_mock_fdocument` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `objectPHID` varbinary(64) NOT NULL, + `isClosed` tinyint(1) NOT NULL, + `authorPHID` varbinary(64) DEFAULT NULL, + `ownerPHID` varbinary(64) DEFAULT NULL, + `epochCreated` int(10) unsigned NOT NULL, + `epochModified` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_object` (`objectPHID`), + KEY `key_author` (`authorPHID`), + KEY `key_owner` (`ownerPHID`), + KEY `key_created` (`epochCreated`), + KEY `key_modified` (`epochModified`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `pholio_mock_ffield` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `fieldKey` varchar(4) COLLATE {$COLLATE_TEXT} NOT NULL, + `rawCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `termCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `normalCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_documentfield` (`documentID`,`fieldKey`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `pholio_mock_fngrams` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `ngram` char(3) COLLATE {$COLLATE_TEXT} NOT NULL, + PRIMARY KEY (`id`), + KEY `key_ngram` (`ngram`,`documentID`), + KEY `key_object` (`documentID`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + CREATE TABLE `pholio_transaction` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `phid` varbinary(64) NOT NULL, @@ -4136,7 +4568,7 @@ CREATE TABLE `conpherence_index` ( UNIQUE KEY `key_previous` (`previousTransactionPHID`), KEY `key_thread` (`threadPHID`), FULLTEXT KEY `key_corpus` (`corpus`) -) ENGINE=MyISAM DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; CREATE TABLE `conpherence_participant` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, @@ -5249,7 +5681,7 @@ CREATE TABLE `nuance_item` ( `dateModified` int(10) unsigned NOT NULL, `queuePHID` varbinary(64) DEFAULT NULL, `itemType` varchar(64) COLLATE {$COLLATE_TEXT} NOT NULL, - `itemKey` varchar(64) COLLATE {$COLLATE_TEXT} NOT NULL, + `itemKey` varchar(64) COLLATE {$COLLATE_TEXT} DEFAULT NULL, `itemContainerKey` varchar(64) COLLATE {$COLLATE_TEXT} DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `key_phid` (`phid`), @@ -5267,8 +5699,12 @@ CREATE TABLE `nuance_itemcommand` ( `authorPHID` varbinary(64) NOT NULL, `command` varchar(64) COLLATE {$COLLATE_TEXT} NOT NULL, `parameters` longtext COLLATE {$COLLATE_TEXT} NOT NULL, + `dateCreated` int(10) unsigned NOT NULL, + `dateModified` int(10) unsigned NOT NULL, + `queuePHID` varbinary(64) DEFAULT NULL, + `status` varchar(64) COLLATE {$COLLATE_TEXT} NOT NULL, PRIMARY KEY (`id`), - KEY `key_item` (`itemPHID`) + KEY `key_pending` (`itemPHID`,`status`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; CREATE TABLE `nuance_itemtransaction` ( @@ -5476,6 +5912,42 @@ CREATE TABLE `passphrase_credential` ( KEY `key_space` (`spacePHID`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +CREATE TABLE `passphrase_credential_fdocument` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `objectPHID` varbinary(64) NOT NULL, + `isClosed` tinyint(1) NOT NULL, + `authorPHID` varbinary(64) DEFAULT NULL, + `ownerPHID` varbinary(64) DEFAULT NULL, + `epochCreated` int(10) unsigned NOT NULL, + `epochModified` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_object` (`objectPHID`), + KEY `key_author` (`authorPHID`), + KEY `key_owner` (`ownerPHID`), + KEY `key_created` (`epochCreated`), + KEY `key_modified` (`epochModified`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `passphrase_credential_ffield` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `fieldKey` varchar(4) COLLATE {$COLLATE_TEXT} NOT NULL, + `rawCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `termCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `normalCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_documentfield` (`documentID`,`fieldKey`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `passphrase_credential_fngrams` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `ngram` char(3) COLLATE {$COLLATE_TEXT} NOT NULL, + PRIMARY KEY (`id`), + KEY `key_ngram` (`ngram`,`documentID`), + KEY `key_object` (`documentID`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + CREATE TABLE `passphrase_credentialtransaction` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `phid` varbinary(64) NOT NULL, @@ -5809,6 +6281,42 @@ CREATE TABLE `fund_initiative` ( KEY `key_owner` (`ownerPHID`) ) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +CREATE TABLE `fund_initiative_fdocument` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `objectPHID` varbinary(64) NOT NULL, + `isClosed` tinyint(1) NOT NULL, + `authorPHID` varbinary(64) DEFAULT NULL, + `ownerPHID` varbinary(64) DEFAULT NULL, + `epochCreated` int(10) unsigned NOT NULL, + `epochModified` int(10) unsigned NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_object` (`objectPHID`), + KEY `key_author` (`authorPHID`), + KEY `key_owner` (`ownerPHID`), + KEY `key_created` (`epochCreated`), + KEY `key_modified` (`epochModified`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `fund_initiative_ffield` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `fieldKey` varchar(4) COLLATE {$COLLATE_TEXT} NOT NULL, + `rawCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `termCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + `normalCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT} NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `key_documentfield` (`documentID`,`fieldKey`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + +CREATE TABLE `fund_initiative_fngrams` ( + `id` int(10) unsigned NOT NULL AUTO_INCREMENT, + `documentID` int(10) unsigned NOT NULL, + `ngram` char(3) COLLATE {$COLLATE_TEXT} NOT NULL, + PRIMARY KEY (`id`), + KEY `key_ngram` (`ngram`,`documentID`), + KEY `key_object` (`documentID`) +) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; + CREATE TABLE `fund_initiativetransaction` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `phid` varbinary(64) NOT NULL, From 6cedd4a95cfc23a1679400fb64863c49f24f2306 Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 12 Sep 2017 12:24:23 -0700 Subject: [PATCH 10/17] Revert quickstart for tables with native FULLTEXT indexes to MyISAM See D18594. --- resources/sql/quickstart.sql | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/resources/sql/quickstart.sql b/resources/sql/quickstart.sql index e9ae4465a4..b29472d5e7 100644 --- a/resources/sql/quickstart.sql +++ b/resources/sql/quickstart.sql @@ -3477,7 +3477,7 @@ CREATE TABLE `search_documentfield` ( `stemmedCorpus` longtext CHARACTER SET {$CHARSET_SORT} COLLATE {$COLLATE_SORT}, KEY `phid` (`phid`), FULLTEXT KEY `key_corpus` (`corpus`,`stemmedCorpus`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +) ENGINE=MyISAM DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; CREATE TABLE `search_documentrelationship` ( `phid` varbinary(64) NOT NULL, @@ -4568,7 +4568,7 @@ CREATE TABLE `conpherence_index` ( UNIQUE KEY `key_previous` (`previousTransactionPHID`), KEY `key_thread` (`threadPHID`), FULLTEXT KEY `key_corpus` (`corpus`) -) ENGINE=InnoDB DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; +) ENGINE=MyISAM DEFAULT CHARSET={$CHARSET} COLLATE={$COLLATE_TEXT}; CREATE TABLE `conpherence_participant` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, From 29f625ef6882939f277ff4f3ce7e0367313499f4 Mon Sep 17 00:00:00 2001 From: epriestley Date: Wed, 13 Sep 2017 14:51:34 -0700 Subject: [PATCH 11/17] Make "No Notifications" setting less broad, and fix a bug with default display behavior Summary: Fixes T12979. In D18457, we added a "No Notifications" setting to let users disable the blue and yellow pop-up notifications that alert you when an object has been updated, since some users found them distracting. However, the change made "do nothing" the default, so all other `JX.Notification` callsites -- which never pass a preference -- were effectively turned off no matter what your setting was set to. This includes the "Read-Only" mode warning (grey), the "High Security" mode warning (purple), the "timezone" warning, and a few others. Tweak things a little bit so the setting applies to ONLY blue and yellow ("object you're following was updated" / "this object was updated") notifications, not other types of popup notifications. Test Plan: - With notifications on in settings, got blue notifications and "Read-only". - With notifications off in settings, got "Read-only" but no blue notifications. Reviewers: amckinley Reviewed By: amckinley Maniphest Tasks: T12979 Differential Revision: https://secure.phabricator.com/D18600 --- resources/celerity/map.php | 52 +++++++++---------- .../PhabricatorNotificationBuilder.php | 12 ++--- ...icatorNotificationIndividualController.php | 8 +-- .../aphlict/behavior-aphlict-listen.js | 7 ++- webroot/rsrc/js/core/Notification.js | 19 ++----- 5 files changed, 42 insertions(+), 56 deletions(-) diff --git a/resources/celerity/map.php b/resources/celerity/map.php index 2093e3e70e..552fe22a68 100644 --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -10,7 +10,7 @@ return array( 'conpherence.pkg.css' => 'e68cf1fa', 'conpherence.pkg.js' => 'b5b51108', 'core.pkg.css' => 'e9473020', - 'core.pkg.js' => '6c085267', + 'core.pkg.js' => '28552e58', 'darkconsole.pkg.js' => '1f9a31bc', 'differential.pkg.css' => '45951e9e', 'differential.pkg.js' => 'b71b8c5d', @@ -374,7 +374,7 @@ return array( 'rsrc/image/texture/table_header_tall.png' => 'd56b434f', 'rsrc/js/application/aphlict/Aphlict.js' => 'e1d4b11a', 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => 'caade6f2', - 'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => 'a14cbdfc', + 'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => '4cc4f460', 'rsrc/js/application/aphlict/behavior-aphlict-status.js' => '5e2634b9', 'rsrc/js/application/aphlict/behavior-desktop-notifications-control.js' => '27ca6289', 'rsrc/js/application/calendar/behavior-day-view.js' => '4b3c4443', @@ -467,7 +467,7 @@ return array( 'rsrc/js/core/KeyboardShortcut.js' => '1ae869f2', 'rsrc/js/core/KeyboardShortcutManager.js' => 'c19dd9b9', 'rsrc/js/core/MultirowRowManager.js' => 'b5d57730', - 'rsrc/js/core/Notification.js' => '5c3349b2', + 'rsrc/js/core/Notification.js' => '008faf9c', 'rsrc/js/core/Prefab.js' => 'c5af80a2', 'rsrc/js/core/ShapedRequest.js' => '7cbe244b', 'rsrc/js/core/TextAreaUtils.js' => '320810c8', @@ -585,7 +585,7 @@ return array( 'javelin-aphlict' => 'e1d4b11a', 'javelin-behavior' => '61cbc29a', 'javelin-behavior-aphlict-dropdown' => 'caade6f2', - 'javelin-behavior-aphlict-listen' => 'a14cbdfc', + 'javelin-behavior-aphlict-listen' => '4cc4f460', 'javelin-behavior-aphlict-status' => '5e2634b9', 'javelin-behavior-aphront-basic-tokenizer' => 'b3a4b884', 'javelin-behavior-aphront-drag-and-drop-textarea' => '484a6e22', @@ -789,7 +789,7 @@ return array( 'phabricator-keyboard-shortcut-manager' => 'c19dd9b9', 'phabricator-main-menu-view' => '1802a242', 'phabricator-nav-view-css' => 'faf6a6fc', - 'phabricator-notification' => '5c3349b2', + 'phabricator-notification' => '008faf9c', 'phabricator-notification-css' => '457861ec', 'phabricator-notification-menu-css' => '10685bd4', 'phabricator-object-selector-css' => '85ee8ce6', @@ -904,6 +904,13 @@ return array( 'unhandled-exception-css' => '4c96257a', ), 'requires' => array( + '008faf9c' => array( + 'javelin-install', + 'javelin-dom', + 'javelin-stratcom', + 'javelin-util', + 'phabricator-notification-css', + ), '013ffff9' => array( 'javelin-install', 'javelin-util', @@ -1236,6 +1243,20 @@ return array( 'javelin-uri', 'phabricator-notification', ), + '4cc4f460' => array( + 'javelin-behavior', + 'javelin-aphlict', + 'javelin-stratcom', + 'javelin-request', + 'javelin-uri', + 'javelin-dom', + 'javelin-json', + 'javelin-router', + 'javelin-util', + 'javelin-leader', + 'javelin-sound', + 'phabricator-notification', + ), '4d863052' => array( 'javelin-dom', 'javelin-util', @@ -1326,13 +1347,6 @@ return array( 'javelin-vector', 'javelin-dom', ), - '5c3349b2' => array( - 'javelin-install', - 'javelin-dom', - 'javelin-stratcom', - 'javelin-util', - 'phabricator-notification-css', - ), '5c54cbf3' => array( 'javelin-behavior', 'javelin-stratcom', @@ -1684,20 +1698,6 @@ return array( 'javelin-util', 'phabricator-keyboard-shortcut', ), - 'a14cbdfc' => array( - 'javelin-behavior', - 'javelin-aphlict', - 'javelin-stratcom', - 'javelin-request', - 'javelin-uri', - 'javelin-dom', - 'javelin-json', - 'javelin-router', - 'javelin-util', - 'javelin-leader', - 'javelin-sound', - 'phabricator-notification', - ), 'a3a63478' => array( 'phui-workcard-view-css', ), diff --git a/src/applications/notification/builder/PhabricatorNotificationBuilder.php b/src/applications/notification/builder/PhabricatorNotificationBuilder.php index 5691755cc7..026f55149c 100644 --- a/src/applications/notification/builder/PhabricatorNotificationBuilder.php +++ b/src/applications/notification/builder/PhabricatorNotificationBuilder.php @@ -153,8 +153,8 @@ final class PhabricatorNotificationBuilder extends Phobject { foreach ($stories as $story) { if ($story instanceof PhabricatorApplicationTransactionFeedStory) { $dict[] = array( - 'desktopReady' => $desktop_ready, - 'webReady' => $web_ready, + 'showAnyNotification' => $web_ready, + 'showDesktopNotification' => $desktop_ready, 'title' => $story->renderText(), 'body' => $story->renderTextBody(), 'href' => $story->getURI(), @@ -162,8 +162,8 @@ final class PhabricatorNotificationBuilder extends Phobject { ); } else if ($story instanceof PhabricatorNotificationTestFeedStory) { $dict[] = array( - 'desktopReady' => $desktop_ready, - 'webReady' => $web_ready, + 'showAnyNotification' => $web_ready, + 'showDesktopNotification' => $desktop_ready, 'title' => pht('Test Notification'), 'body' => $story->renderText(), 'href' => null, @@ -171,8 +171,8 @@ final class PhabricatorNotificationBuilder extends Phobject { ); } else { $dict[] = array( - 'desktopReady' => false, - 'webReady' => false, + 'showWebNotification' => false, + 'showDesktopNotification' => false, 'title' => null, 'body' => null, 'href' => null, diff --git a/src/applications/notification/controller/PhabricatorNotificationIndividualController.php b/src/applications/notification/controller/PhabricatorNotificationIndividualController.php index 8ef6286225..bac429288e 100644 --- a/src/applications/notification/controller/PhabricatorNotificationIndividualController.php +++ b/src/applications/notification/controller/PhabricatorNotificationIndividualController.php @@ -38,15 +38,9 @@ final class PhabricatorNotificationIndividualController $dict = $builder->buildDict(); $data = $dict[0]; - $response = array( + $response = $data + array( 'pertinent' => true, 'primaryObjectPHID' => $story->getPrimaryObjectPHID(), - 'desktopReady' => $data['desktopReady'], - 'webReady' => $data['webReady'], - 'href' => $data['href'], - 'icon' => $data['icon'], - 'title' => $data['title'], - 'body' => $data['body'], 'content' => hsprintf('%s', $content), 'uniqueID' => 'story/'.$story->getChronologicalKey(), ); diff --git a/webroot/rsrc/js/application/aphlict/behavior-aphlict-listen.js b/webroot/rsrc/js/application/aphlict/behavior-aphlict-listen.js index 2886aa0372..24571b5981 100644 --- a/webroot/rsrc/js/application/aphlict/behavior-aphlict-listen.js +++ b/webroot/rsrc/js/application/aphlict/behavior-aphlict-listen.js @@ -78,12 +78,15 @@ JX.behavior('aphlict-listen', function(config) { JX.Stratcom.invoke('notification-panel-update', null, {}); var response = e.getData(); + if (!response.showAnyNotification) { + return; + } + // Show the notification itself. new JX.Notification() .setContent(JX.$H(response.content)) - .setDesktopReady(response.desktopReady) - .setWebReady(response.webReady) .setKey(response.primaryObjectPHID) + .setShowAsDesktopNotification(response.showDesktopNotification) .setTitle(response.title) .setBody(response.body) .setHref(response.href) diff --git a/webroot/rsrc/js/core/Notification.js b/webroot/rsrc/js/core/Notification.js index 9e59ec1501..13e6cc47ae 100644 --- a/webroot/rsrc/js/core/Notification.js +++ b/webroot/rsrc/js/core/Notification.js @@ -26,8 +26,7 @@ JX.install('Notification', { _visible : false, _hideTimer : null, _duration : 12000, - _desktopReady : false, - _webReady : false, + _asDesktop : false, _key : null, _title : null, _body : null, @@ -37,11 +36,6 @@ JX.install('Notification', { show : function() { var self = JX.Notification; - // This person doesn't like any real-time notification - if (!this._desktopReady && !this._webReady) { - return; - } - if (!this._visible) { this._visible = true; @@ -51,7 +45,7 @@ JX.install('Notification', { if (self.supportsDesktopNotifications() && self.desktopNotificationsEnabled() && - this._desktopReady) { + this._asDesktop) { // Note: specifying "tag" means that notifications with matching // keys will aggregate. var n = new window.Notification(this._title, { @@ -94,13 +88,8 @@ JX.install('Notification', { return this; }, - setDesktopReady : function(ready) { - this._desktopReady = ready; - return this; - }, - - setWebReady : function(ready) { - this._webReady = ready; + setShowAsDesktopNotification : function(mode) { + this._asDesktop = mode; return this; }, From 6fb3f857fb57bd902b826567d38c07eb131b008b Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 12 Sep 2017 15:32:15 -0700 Subject: [PATCH 12/17] Stop the bleeding caused by attaching enormous patches to revision mail Summary: Ref T12033. This is a very narrow fix for this issue, but it should fix the major error: don't attach patches if they're bigger than the mail body limit (by default, 512KB). Specifically, the logs from an install in T12033 show a 112MB patch being attached, and that's the biggest practical problem here. I'll follow up on the tasks with more nuanced future work. Test Plan: Enabled `differential.attach-patches`, saw a patch attached to email. Set the byte limit very low, saw patches get thrown away. Reviewers: chad, amckinley Reviewed By: amckinley Maniphest Tasks: T12033 Differential Revision: https://secure.phabricator.com/D18598 --- .../editor/DifferentialTransactionEditor.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/applications/differential/editor/DifferentialTransactionEditor.php b/src/applications/differential/editor/DifferentialTransactionEditor.php index e916728c86..c6270013aa 100644 --- a/src/applications/differential/editor/DifferentialTransactionEditor.php +++ b/src/applications/differential/editor/DifferentialTransactionEditor.php @@ -766,10 +766,14 @@ final class DifferentialTransactionEditor } if ($config_attach) { - $name = pht('D%s.%s.patch', $object->getID(), $diff->getID()); - $mime_type = 'text/x-patch; charset=utf-8'; - $body->addAttachment( - new PhabricatorMetaMTAAttachment($patch, $name, $mime_type)); + // See T12033, T11767, and PHI55. This is a crude fix to stop the + // major concrete problems that lackluster email size limits cause. + if (strlen($patch) < $body_limit) { + $name = pht('D%s.%s.patch', $object->getID(), $diff->getID()); + $mime_type = 'text/x-patch; charset=utf-8'; + $body->addAttachment( + new PhabricatorMetaMTAAttachment($patch, $name, $mime_type)); + } } } } From c310f08b7a5cf7ae339a2d6c91955ba08560ce93 Mon Sep 17 00:00:00 2001 From: epriestley Date: Wed, 13 Sep 2017 12:14:06 -0700 Subject: [PATCH 13/17] Work around workflow blocking error with duplicate "master" refs in "Land Revision" Summary: Ref T11823. See PHI68. T11823 has a full description of this issue and a plan to fix it, but the full plan is relatively complicated. Until that can happen, provide a workaround for the biggest immediate issue, where multiple copies of a ref cursor can cause `executeOne()` to throw, since it expects a single result. In practice, these copies are always identical so we can just pick the first one. This will get cleaned up once T11823 is fixed properly. Test Plan: Forced the table into a duplicate/ambiguous state, reproduced a similar-looking error: {F5180999} Applied the patch, got the "Land" to work as expected: {F5181000} Reviewers: amckinley Reviewed By: amckinley Maniphest Tasks: T11823 Differential Revision: https://secure.phabricator.com/D18599 --- .../DifferentialRevisionOperationController.php | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/applications/differential/controller/DifferentialRevisionOperationController.php b/src/applications/differential/controller/DifferentialRevisionOperationController.php index feeb6770b8..593815f15b 100644 --- a/src/applications/differential/controller/DifferentialRevisionOperationController.php +++ b/src/applications/differential/controller/DifferentialRevisionOperationController.php @@ -137,9 +137,19 @@ final class DifferentialRevisionOperationController return null; } - return $this->newRefQuery($repository) + // NOTE: See PHI68. This is a workaround to make "Land Revision" work + // until T11823 is fixed properly. If we find multiple refs with the same + // name (normally, duplicate "master" refs), just pick the first one. + + $refs = $this->newRefQuery($repository) ->withRefNames(array($default_name)) - ->executeOne(); + ->execute(); + + if ($refs) { + return head($refs); + } + + return null; } private function getDefaultRefName( From 939008e64c2661aa82d42514e043a4a3e8c4fe99 Mon Sep 17 00:00:00 2001 From: epriestley Date: Thu, 14 Sep 2017 04:23:53 -0700 Subject: [PATCH 14/17] Correct an issue where Maniphest's awful legacy "reports" UI was extra broken on merges Summary: See PHI66. See that issue for context. This UI is bad broken legacy junk, but was especially broken when reporting merges. These do not currently generate a "status" transaction, so they were never counted as task closures. Pretend they're normal closures. This is still wrong, but should be much closer to the real numbers. Specifically, if you merge a closed task into another task, it will incorrectly be counted as an extra close. This could result in negative tasks, but the numbers should be much closer to reality than they are today even so. The "Facts" application (T1562) is the real pathway forward here in the longer term. Test Plan: - Moved my `maniphest_transactions` table aside with `RENAME TABLE ...`. - Created a new empty table with `CREATE TABLE ... LIKE ...`. - Reloaded reports UI, saw empty chart. - Created, closed, and reopened tasks while reloading the chart, saw accurate reporting. - Merged an open task into another task, saw bad reporting. - Applied patch, saw the right chart again. Reviewers: amckinley Reviewed By: amckinley Differential Revision: https://secure.phabricator.com/D18601 --- .../controller/ManiphestReportController.php | 31 ++++++++++++++----- 1 file changed, 24 insertions(+), 7 deletions(-) diff --git a/src/applications/maniphest/controller/ManiphestReportController.php b/src/applications/maniphest/controller/ManiphestReportController.php index 3cc420a4c6..6a5b3ad50c 100644 --- a/src/applications/maniphest/controller/ManiphestReportController.php +++ b/src/applications/maniphest/controller/ManiphestReportController.php @@ -88,23 +88,40 @@ final class ManiphestReportController extends ManiphestController { $data = queryfx_all( $conn, - 'SELECT x.oldValue, x.newValue, x.dateCreated FROM %T x %Q - WHERE transactionType = %s + 'SELECT x.transactionType, x.oldValue, x.newValue, x.dateCreated + FROM %T x %Q + WHERE transactionType IN (%Ls) ORDER BY x.dateCreated ASC', $table->getTableName(), $joins, - ManiphestTaskStatusTransaction::TRANSACTIONTYPE); + array( + ManiphestTaskStatusTransaction::TRANSACTIONTYPE, + ManiphestTaskMergedIntoTransaction::TRANSACTIONTYPE, + )); $stats = array(); $day_buckets = array(); $open_tasks = array(); + $default_status = ManiphestTaskStatus::getDefaultStatus(); + $duplicate_status = ManiphestTaskStatus::getDuplicateStatus(); foreach ($data as $key => $row) { - - // NOTE: Hack to avoid json_decode(). - $oldv = trim($row['oldValue'], '"'); - $newv = trim($row['newValue'], '"'); + switch ($row['transactionType']) { + case ManiphestTaskStatusTransaction::TRANSACTIONTYPE: + // NOTE: Hack to avoid json_decode(). + $oldv = trim($row['oldValue'], '"'); + $newv = trim($row['newValue'], '"'); + break; + case ManiphestTaskMergedIntoTransaction::TRANSACTIONTYPE: + // NOTE: Merging a task does not generate a "status" transaction. + // We pretend it did. Note that this is not always accurate: it is + // possble to merge a task which was previously closed, but this + // fake transaction always counts a merge as a closure. + $oldv = $default_status; + $newv = $duplicate_status; + break; + } if ($oldv == 'null') { $old_is_open = false; From c71cb944a42851de00b2129f15899f7681b0f7ed Mon Sep 17 00:00:00 2001 From: Austin McKinley Date: Thu, 14 Sep 2017 13:18:40 -0700 Subject: [PATCH 15/17] Add edit methods for Almanac services and devices Summary: See T12414. This just gets started; we still need edit endpoints for network interfaces and bindings. Test Plan: Created some devices/services from the conduit UI. Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin Differential Revision: https://secure.phabricator.com/D18605 --- src/__phutil_library_map__.php | 4 ++++ .../AlamancServiceEditConduitAPIMethod.php | 19 +++++++++++++++++++ .../AlmanacDeviceEditConduitAPIMethod.php | 19 +++++++++++++++++++ 3 files changed, 42 insertions(+) create mode 100644 src/applications/almanac/conduit/AlamancServiceEditConduitAPIMethod.php create mode 100644 src/applications/almanac/conduit/AlmanacDeviceEditConduitAPIMethod.php diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php index 97f5b480a4..282e5aaf62 100644 --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -9,6 +9,7 @@ phutil_register_library_map(array( '__library_version__' => 2, 'class' => array( + 'AlamancServiceEditConduitAPIMethod' => 'applications/almanac/conduit/AlamancServiceEditConduitAPIMethod.php', 'AlmanacAddress' => 'applications/almanac/util/AlmanacAddress.php', 'AlmanacBinding' => 'applications/almanac/storage/AlmanacBinding.php', 'AlmanacBindingDisableController' => 'applications/almanac/controller/AlmanacBindingDisableController.php', @@ -36,6 +37,7 @@ phutil_register_library_map(array( 'AlmanacDAO' => 'applications/almanac/storage/AlmanacDAO.php', 'AlmanacDevice' => 'applications/almanac/storage/AlmanacDevice.php', 'AlmanacDeviceController' => 'applications/almanac/controller/AlmanacDeviceController.php', + 'AlmanacDeviceEditConduitAPIMethod' => 'applications/almanac/conduit/AlmanacDeviceEditConduitAPIMethod.php', 'AlmanacDeviceEditController' => 'applications/almanac/controller/AlmanacDeviceEditController.php', 'AlmanacDeviceEditEngine' => 'applications/almanac/editor/AlmanacDeviceEditEngine.php', 'AlmanacDeviceEditor' => 'applications/almanac/editor/AlmanacDeviceEditor.php', @@ -4930,6 +4932,7 @@ phutil_register_library_map(array( 'require_celerity_resource' => 'applications/celerity/api.php', ), 'xmap' => array( + 'AlamancServiceEditConduitAPIMethod' => 'PhabricatorEditEngineAPIMethod', 'AlmanacAddress' => 'Phobject', 'AlmanacBinding' => array( 'AlmanacDAO', @@ -4975,6 +4978,7 @@ phutil_register_library_map(array( 'PhabricatorExtendedPolicyInterface', ), 'AlmanacDeviceController' => 'AlmanacController', + 'AlmanacDeviceEditConduitAPIMethod' => 'PhabricatorEditEngineAPIMethod', 'AlmanacDeviceEditController' => 'AlmanacDeviceController', 'AlmanacDeviceEditEngine' => 'PhabricatorEditEngine', 'AlmanacDeviceEditor' => 'AlmanacEditor', diff --git a/src/applications/almanac/conduit/AlamancServiceEditConduitAPIMethod.php b/src/applications/almanac/conduit/AlamancServiceEditConduitAPIMethod.php new file mode 100644 index 0000000000..d56b07a21d --- /dev/null +++ b/src/applications/almanac/conduit/AlamancServiceEditConduitAPIMethod.php @@ -0,0 +1,19 @@ + Date: Fri, 15 Sep 2017 05:33:08 -0700 Subject: [PATCH 16/17] Fix an outdated HTML anchor link in Diffusion table of contents Summary: See . In D18465, I updated these but this hard-coded the anchor for some reason (???) and I missed it while `grep`-ing. Test Plan: Viewed a commit (`/rXYZaaaa`) and clicked a file link in the table of contents. Got modern `#change-...` anchor and navigation into the document. Reviewers: amckinley Reviewed By: amckinley Differential Revision: https://secure.phabricator.com/D18609 --- .../diffusion/controller/DiffusionCommitController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/applications/diffusion/controller/DiffusionCommitController.php b/src/applications/diffusion/controller/DiffusionCommitController.php index 554ad64e5e..59a132b17d 100644 --- a/src/applications/diffusion/controller/DiffusionCommitController.php +++ b/src/applications/diffusion/controller/DiffusionCommitController.php @@ -946,7 +946,7 @@ final class DiffusionCommitController extends DiffusionController { foreach ($changesets as $changeset_id => $changeset) { $path = $changeset->getFilename(); - $anchor = substr(md5($path), 0, 8); + $anchor = $changeset->getAnchorName(); $history_link = $diffusion_view->linkHistory($path); $browse_link = $diffusion_view->linkBrowse( From bd923d1ce0914f587a8ef5ad1a4f171b52cc4925 Mon Sep 17 00:00:00 2001 From: epriestley Date: Fri, 15 Sep 2017 05:46:41 -0700 Subject: [PATCH 17/17] Provide an explicit "-R" flag to "hg serve" Summary: See . The Mercurial commit is helpful in particular: We weren't vulnerable to the security issue (users can not control any part of the command) but pass the working directory explicitly to get past the new safety check. I left `setCWD()` in place (a few lines below) just because it can't hurt, and in some other contexts it sometimes matter (for example, if commit hooks execute, they might inherit the parent CWD here or in other VCSes). Test Plan: - Cloned from a Mercurial repo locally over HTTP. - Verified that SSH cloning already uses `-R` (it does, see `DiffusionMercurialServeSSHWorkflow`). - Did not actually upgrade to Mercurial 4.0/4.1.3 to completely verify this, but a user in the Discourse thread asserted that a substantially similar fix worked correctly. Reviewers: amckinley Reviewed By: amckinley Differential Revision: https://secure.phabricator.com/D18611 --- .../diffusion/controller/DiffusionServeController.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/applications/diffusion/controller/DiffusionServeController.php b/src/applications/diffusion/controller/DiffusionServeController.php index 5e61ae3a7c..98942cf2e7 100644 --- a/src/applications/diffusion/controller/DiffusionServeController.php +++ b/src/applications/diffusion/controller/DiffusionServeController.php @@ -768,7 +768,10 @@ final class DiffusionServeController extends DiffusionController { $input = strlen($input)."\n".$input."0\n"; } - $command = csprintf('%s serve --stdio', $bin); + $command = csprintf( + '%s serve -R %s --stdio', + $bin, + $repository->getLocalPath()); $command = PhabricatorDaemon::sudoCommandAsDaemonUser($command); list($err, $stdout, $stderr) = id(new ExecFuture('%C', $command))