Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
This Pull Request resolves an issue with inconsistent paging when running CSW
GetRecords
requests against a PostgreSQL backend that utilizesSortBy
on a non-unique field (e.g.,dc:date
).When multiple records share the same value for the sort field, PostgreSQL's tie-breaker is non-deterministic, causing records to be included in more than one page when pagination (
LIMIT
/OFFSET
) is used.The fix introduces a configuration option to enable a stable sort by automatically appending the unique record identifier (
pycsw:Identifier
) to theORDER BY
clause of the database query. This ensures a consistent and deterministic order for all records, guaranteeing reliable pagination.Related Issue / Discussion
Fixes: #1155
Additional Information
A new configuration option,
stable_sort
, has been added to the[repository]
section of the configuration file.To enable the fix, set
stable_sort
totrue
(it defaults tofalse
for backwards compatibility):Contributions and Licensing
(as per https://github.com/geopython/pycsw/blob/master/CONTRIBUTING.rst\#contributions-and-licensing)