QutEcoacoustics/baw-server

API page results have an unstable sort when sorted by a column other than `id`

Opened this issue · 0 comments

When sorting by recorded_date for example, if two dates are equal then the database is free to choose which order the rows are returned in.

This is not an issue for a single request, but when a user pages through hundreds of pages of results, where sub-groups (in this case of sizes up to 6 or more items) are unstably sorted, the end result is duplication of some records, and omission of others.

I think the filtering API should add an explicit secondary sort to any filter query to ensure stable sorting in sub-groups always occurs. I.e. ORDER BY recorded_date, id instead of ORDER BY recorded_date whenever order_by is used in filter requests.

Alternative idea: implement cursor-based searches. Probably too costly to be useful.