Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15403273
D8355.id19862.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Referenced Files
None
Subscribers
None
D8355.id19862.diff
View Options
diff --git a/resources/sql/autopatches/20140226.dxcustom.1.fielddata.php b/resources/sql/autopatches/20140226.dxcustom.1.fielddata.php
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20140226.dxcustom.1.fielddata.php
@@ -0,0 +1,22 @@
+<?php
+
+$conn_w = id(new DifferentialRevision())->establishConnection('w');
+$rows = new LiskRawMigrationIterator($conn_w, 'differential_auxiliaryfield');
+
+echo "Modernizing Differential auxiliary field storage...\n";
+
+$table_name = id(new DifferentialCustomFieldStorage())->getTableName();
+foreach ($rows as $row) {
+ $id = $row['id'];
+ echo "Migrating row {$id}...\n";
+ queryfx(
+ $conn_w,
+ 'INSERT IGNORE INTO %T (objectPHID, fieldIndex, fieldValue)
+ VALUES (%s, %s, %s)',
+ $table_name,
+ $row['revisionPHID'],
+ PhabricatorHash::digestForIndex($row['name']),
+ $row['value']);
+}
+
+echo "Done.\n";
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -2881,7 +2881,6 @@
'DifferentialAsanaRepresentationFieldSpecification' => 'DifferentialFieldSpecification',
'DifferentialAuditorsFieldSpecification' => 'DifferentialFieldSpecification',
'DifferentialAuthorFieldSpecification' => 'DifferentialFieldSpecification',
- 'DifferentialAuxiliaryField' => 'DifferentialDAO',
'DifferentialBlameRevisionFieldSpecification' => 'DifferentialFieldSpecification',
'DifferentialBranchFieldSpecification' => 'DifferentialFieldSpecification',
'DifferentialCCWelcomeMail' => 'DifferentialReviewRequestMail',
diff --git a/src/applications/differential/editor/DifferentialRevisionEditor.php b/src/applications/differential/editor/DifferentialRevisionEditor.php
--- a/src/applications/differential/editor/DifferentialRevisionEditor.php
+++ b/src/applications/differential/editor/DifferentialRevisionEditor.php
@@ -707,14 +707,14 @@
$revision = $this->revision;
- $fields = id(new DifferentialAuxiliaryField())->loadAllWhere(
- 'revisionPHID = %s AND name IN (%Ls)',
- $revision->getPHID(),
- array_keys($aux_map));
- $fields = mpull($fields, null, 'getName');
+ $fields = id(new DifferentialCustomFieldStorage())->loadAllWhere(
+ 'objectPHID = %s',
+ $revision->getPHID());
+ $fields = mpull($fields, null, 'getFieldIndex');
foreach ($aux_map as $key => $val) {
- $obj = idx($fields, $key);
+ $index = PhabricatorHash::digestForIndex($key);
+ $obj = idx($fields, $index);
if (!strlen($val)) {
// If the new value is empty, just delete the old row if one exists and
// don't add a new row if it doesn't.
@@ -723,9 +723,9 @@
}
} else {
if (!$obj) {
- $obj = new DifferentialAuxiliaryField();
- $obj->setRevisionPHID($revision->getPHID());
- $obj->setName($key);
+ $obj = new DifferentialCustomFieldStorage();
+ $obj->setObjectPHID($revision->getPHID());
+ $obj->setFieldIndex($index);
}
if ($obj->getValue() !== $val) {
diff --git a/src/applications/differential/storage/DifferentialAuxiliaryField.php b/src/applications/differential/storage/DifferentialAuxiliaryField.php
--- a/src/applications/differential/storage/DifferentialAuxiliaryField.php
+++ b/src/applications/differential/storage/DifferentialAuxiliaryField.php
@@ -1,20 +1,6 @@
<?php
-final class DifferentialAuxiliaryField extends DifferentialDAO {
-
- protected $revisionPHID;
- protected $name;
- protected $value;
-
- public function setName($name) {
- if (strlen($name) > 32) {
- throw new Exception(
- "Tried to set name '{$name}' for a Differential auxiliary field; ".
- "auxiliary field names must be no longer than 32 characters.");
- }
- $this->name = $name;
- return $this;
- }
+final class DifferentialAuxiliaryField {
public static function loadFromStorage(
DifferentialRevision $revision,
@@ -24,11 +10,20 @@
$storage_keys = array_filter(mpull($aux_fields, 'getStorageKey'));
$field_data = array();
if ($storage_keys) {
- $field_data = id(new DifferentialAuxiliaryField())->loadAllWhere(
- 'revisionPHID = %s AND name IN (%Ls)',
+ $index_map = array();
+ foreach ($storage_keys as $key) {
+ $index_map[PhabricatorHash::digestForIndex($key)] = $key;
+ }
+
+ $index_data = id(new DifferentialCustomFieldStorage())->loadAllWhere(
+ 'objectPHID = %s AND fieldIndex IN (%Ls)',
$revision->getPHID(),
- $storage_keys);
- $field_data = mpull($field_data, 'getValue', 'getName');
+ array_keys($index_map));
+ $index_data = mpull($index_data, 'getFieldValue', 'getFieldIndex');
+
+ foreach ($index_data as $index => $data) {
+ $field_data[$index_map[$index]] = $data;
+ }
}
foreach ($aux_fields as $aux_field) {
diff --git a/src/applications/differential/storage/DifferentialRevision.php b/src/applications/differential/storage/DifferentialRevision.php
--- a/src/applications/differential/storage/DifferentialRevision.php
+++ b/src/applications/differential/storage/DifferentialRevision.php
@@ -209,13 +209,6 @@
$inline->delete();
}
- $fields = id(new DifferentialAuxiliaryField())->loadAllWhere(
- 'revisionPHID = %s',
- $this->getPHID());
- foreach ($fields as $field) {
- $field->delete();
- }
-
// we have to do paths a little differentally as they do not have
// an id or phid column for delete() to act on
$dummy_path = new DifferentialAffectedPath();
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Wed, Mar 19, 2:33 AM (4 d, 10 h ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7710688
Default Alt Text
D8355.id19862.diff (5 KB)
Attached To
Mode
D8355: Migrate old AuxiliaryField storage to modern CustomField storage
Attached
Detach File
Event Timeline
Log In to Comment