mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-26 16:52:41 +01:00
Correct some straggling Ferret/Cursor interactions
Summary: See PHI1182. Ref T13266. The recent fixes didn't quite cover the case where you have a query, but order by something other than relevance, and page forward. Refine the tests around building/selecting these columns and paging values a little bit to be more specific about what they care about. Test Plan: Executed queries, then went to "Next Page", for: - query text, non-relevance order. - query text, relevance order. - no query text, non-relevance order. - no query text, relevance order. Also, made an API call similar to the one in PHI1182. Reviewers: amckinley Reviewed By: amckinley Maniphest Tasks: T13266 Differential Revision: https://secure.phabricator.com/D20354
This commit is contained in:
parent
ea182b6df9
commit
00b1c4190c
1 changed files with 23 additions and 4 deletions
|
@ -212,7 +212,7 @@ abstract class PhabricatorCursorPagedPolicyAwareQuery
|
|||
}
|
||||
|
||||
if ($this->supportsFerretEngine()) {
|
||||
if ($this->getFerretTokens()) {
|
||||
if ($this->hasFerretOrder()) {
|
||||
$map += array(
|
||||
'rank' =>
|
||||
$cursor->getRawRowProperty(self::FULLTEXT_RANK),
|
||||
|
@ -1840,15 +1840,16 @@ abstract class PhabricatorCursorPagedPolicyAwareQuery
|
|||
return $select;
|
||||
}
|
||||
|
||||
$vector = $this->getOrderVector();
|
||||
if (!$vector->containsKey('rank')) {
|
||||
// We only need to SELECT the virtual "_ft_rank" column if we're
|
||||
if (!$this->hasFerretOrder()) {
|
||||
// We only need to SELECT the virtual rank/relevance columns if we're
|
||||
// actually sorting the results by rank.
|
||||
return $select;
|
||||
}
|
||||
|
||||
if (!$this->ferretEngine) {
|
||||
$select[] = qsprintf($conn, '0 AS %T', self::FULLTEXT_RANK);
|
||||
$select[] = qsprintf($conn, '0 AS %T', self::FULLTEXT_CREATED);
|
||||
$select[] = qsprintf($conn, '0 AS %T', self::FULLTEXT_MODIFIED);
|
||||
return $select;
|
||||
}
|
||||
|
||||
|
@ -3152,4 +3153,22 @@ abstract class PhabricatorCursorPagedPolicyAwareQuery
|
|||
}
|
||||
}
|
||||
|
||||
private function hasFerretOrder() {
|
||||
$vector = $this->getOrderVector();
|
||||
|
||||
if ($vector->containsKey('rank')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($vector->containsKey('fulltext-created')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if ($vector->containsKey('fulltext-modified')) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue