aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Somerville <matthew@mysociety.org>2020-07-31 15:27:42 +0100
committerM Somerville <matthew-github@dracos.co.uk>2020-08-06 20:28:57 +0100
commit52b1410f91669fab5f22cae9a9d9a040a0144c9a (patch)
tree66d15f9ca3bd866b52c79241f95152d685f2bad7
parent1e7cba67a53eead8cedcbf6aa7af12eb7ff4bf63 (diff)
Add extra ordering to search query to force full text index use.
-rw-r--r--perllib/FixMyStreet/App/Controller/Admin/Reports.pm7
1 files changed, 6 insertions, 1 deletions
diff --git a/perllib/FixMyStreet/App/Controller/Admin/Reports.pm b/perllib/FixMyStreet/App/Controller/Admin/Reports.pm
index 052230643..e3a425632 100644
--- a/perllib/FixMyStreet/App/Controller/Admin/Reports.pm
+++ b/perllib/FixMyStreet/App/Controller/Admin/Reports.pm
@@ -92,6 +92,9 @@ sub index : Path {
];
} else {
$problems = $problems->search_text($search);
+ # The below is added so that PostgreSQL does not try and use other indexes
+ # besides the full text search. It should have no impact on results shown.
+ $order = [ $order, { -desc => "me.id" }, { -desc => "me.created" } ];
}
$problems = $problems->search(
@@ -109,6 +112,7 @@ sub index : Path {
$c->stash->{problems_pager} = $problems->pager;
my $updates = $c->cobrand->updates;
+ $order = { -desc => 'me.id' };
if ($valid_email) {
$query = [
'user.email' => { ilike => $like_search },
@@ -126,6 +130,7 @@ sub index : Path {
$query = 0;
} else {
$updates = $updates->search_text($search);
+ $order = [ $order, { -desc => "me.created" } ];
$query = 1;
}
@@ -140,7 +145,7 @@ sub index : Path {
join => 'user',
prefetch => [qw/problem/],
rows => 50,
- order_by => { -desc => 'me.id' }
+ order_by => $order,
}
)->page( $u_page );
$c->stash->{updates} = [ $updates->all ];