bug: Fix decimal.InvalidOperation on /system for some PG versions #3027
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.
Description
In #2730 the /system page was improved to warn the user if the version of Postgres they are using is out of date and should be updated. The current code attempts to determine the major versions by replacing
00
with.
and then converting to aDecimal
. Unfortunately, it appears the only value this method does not work for are initial releases of major versions, like16.0.0
.For reference, either Postgres or the PsyCog driver represents the semver values but without the dots, so
16.0.0
becomes1600000
.This change removes the string replace and Decimal conversion in favor of using the
divmod()
function. In this application it will return a tuple with the first element being the major version of Postgres. This is then used as before to compare against deprecated versions.Versions
Postgres
Tandoor
Reproduction
Testing
Manually testing with the following values and confirmed the
/system
page displayed the info/warning/ok notices as expected.