From b04d9fdc0ba875d1fd0ff61152a712e163135e18 Mon Sep 17 00:00:00 2001 From: epriestley Date: Thu, 26 Oct 2017 13:11:51 -0700 Subject: [PATCH] Add a missing key to PhabricatorFile for destroying Files Summary: See PHI176. Depends on D18733. We issue a query when deleting files that currently doesn't hit any keys. Test Plan: Ran `./bin/remove destroy --force --trace F56376` to get the query. Ran ##SELECT * FROM `file` WHERE storageEngine = 'blob' AND storageHandle = '23366' LIMIT 1## before and after the change. Before: ``` mysql> explain SELECT * FROM `file` WHERE storageEngine = 'blob' AND storageHandle = '23366' LIMIT 1; +----+-------------+-------+------+---------------+------+---------+------+-------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+---------------+------+---------+------+-------+-------------+ | 1 | SIMPLE | file | ALL | NULL | NULL | NULL | NULL | 33866 | Using where | +----+-------------+-------+------+---------------+------+---------+------+-------+-------------+ 1 row in set (0.01 sec) ``` After: ``` mysql> explain SELECT * FROM `file` WHERE storageEngine = 'blob' AND storageHandle = '23366' LIMIT 1; +----+-------------+-------+------+---------------+------------+---------+-------------+------+------------------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+---------------+------------+---------+-------------+------+------------------------------------+ | 1 | SIMPLE | file | ref | key_engine | key_engine | 388 | const,const | 190 | Using index condition; Using where | +----+-------------+-------+------+---------------+------------+---------+-------------+------+------------------------------------+ 1 row in set (0.00 sec) ``` Reviewers: amckinley Reviewed By: amckinley Differential Revision: https://secure.phabricator.com/D18734 --- src/applications/files/storage/PhabricatorFile.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/applications/files/storage/PhabricatorFile.php b/src/applications/files/storage/PhabricatorFile.php index 9636b5b017..c87623c68c 100644 --- a/src/applications/files/storage/PhabricatorFile.php +++ b/src/applications/files/storage/PhabricatorFile.php @@ -134,6 +134,9 @@ final class PhabricatorFile extends PhabricatorFileDAO 'columns' => array('builtinKey'), 'unique' => true, ), + 'key_engine' => array( + 'columns' => array('storageEngine', 'storageHandle(64)'), + ), ), ) + parent::getConfiguration(); }