mirror of
https://we.phorge.it/source/phorge.git
synced 2025-02-24 12:39:04 +01:00
(stable) Fix an issue where querying for a large number of projects by slug could paginate incorrectly
Summary: See PHI1809. This query may join the "slug" table, but each project may have multiple slugs, and the query does not "GROUP BY" when this join occurs. This may lead to partial result sets and unusual paging behavior. This could likely be caught categorically in `loadAllFromArray()`; I'll adjust this in a followup. Test Plan: A minimal reproduction case is something like: - Give project P slugs: a, b, c. - Give project Q slugs: d. - Query for slugs: a, b, c, d; with limit 2. - Order the query so P returns first. - Expect: P and Q. - Actual: P generates 3 raw rows and the final result is just P with no pagination cursor. Differential Revision: https://secure.phabricator.com/D21399
This commit is contained in:
parent
b2f0937e30
commit
852e368cb7
1 changed files with 5 additions and 0 deletions
|
@ -656,6 +656,11 @@ final class PhabricatorProjectQuery
|
||||||
if ($this->memberPHIDs || $this->watcherPHIDs || $this->nameTokens) {
|
if ($this->memberPHIDs || $this->watcherPHIDs || $this->nameTokens) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($this->slugs) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
return parent::shouldGroupQueryResultRows();
|
return parent::shouldGroupQueryResultRows();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue