#21427 closed Cleanup/optimization (fixed)
Clearly state the value range of all integer type fields in the model field documentation
Reported by: | Markus Amalthea Magnuson | Owned by: | nobody |
---|---|---|---|
Component: | Documentation | Version: | dev |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Ready for checkin | |
Has patch: | yes | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
The documentation for BigIntegerField, PositiveSmallIntegerField and SmallIntegerField clearly state what integer values fit into that field's size:
https://docs.djangoproject.com/en/dev/ref/models/fields/#bigintegerfield
https://docs.djangoproject.com/en/dev/ref/models/fields/#positivesmallintegerfield
https://docs.djangoproject.com/en/dev/ref/models/fields/#smallintegerfield
But these do not state the same info:
https://docs.djangoproject.com/en/dev/ref/models/fields/#integerfield
https://docs.djangoproject.com/en/dev/ref/models/fields/#positiveintegerfield
For clarity, I think all of the above fields should be documented with a standardized sentence like this:
"Values from X to Y are safe in all databases supported by Django."
Change History (8)
comment:1 by , 11 years ago
Triage Stage: | Unreviewed → Accepted |
---|---|
Version: | → master |
comment:2 by , 11 years ago
comment:3 by , 11 years ago
Has patch: | set |
---|---|
Triage Stage: | Accepted → Ready for checkin |
Assuming the ranges are correct, this looks good. Could you amend your PR to follow the commit message guidelines? Also, don't forget to check "Has patch" so the ticket appears in the review queue. Thanks!
comment:4 by , 11 years ago
Triage Stage: | Ready for checkin → Accepted |
---|
Sorry, but I'd like to know where do the new figures come from. Could you please document here your findings (with appropriate links to backends documentation)?
comment:5 by , 11 years ago
Sorry, I did not do my homework properly, and the values were not correct.
I've now corrected them and opened a new pull request (following commit message guidelines): https://github.com/django/django/pull/1955
The values and their sources are as follows:
MySQL
IntegerField (integer): -2147483648 to 2147483647
PositiveIntegerField (integer UNSIGNED): 0 to 2147483647
PositiveSmallIntegerField (smallint UNSIGNED): 0 to 32767
Source: http://dev.mysql.com/doc/refman/5.0/en/integer-types.html
Postgres
IntegerField (integer): -2147483648 to 2147483647
PositiveIntegerField (integer): 0 to 2147483647
PositiveSmallIntegerField (smallint): 0 to 32767
Source: http://www.postgresql.org/docs/devel/static/datatype-numeric.html
Oracle
IntegerField (NUMBER(11)): -99999999999 to 99999999999
PositiveIntegerField (NUMBER(11)): 0 to 99999999999
PositiveSmallIntegerField (NUMBER(11)): 0 to 99999999999
Source: http://docs.oracle.com/cd/E11882_01/server.112/e25513/limits001.htm
SQLite
("1, 2, 3, 4, 6, or 8 bytes depending on the magnitude of the value.")
IntegerField (integer): -9223372036854775808 to 9223372036854775807
PositiveIntegerField (integer unsigned): 0 to 9223372036854775807
PositiveSmallIntegerField (smallint unsigned): 0 to 9223372036854775807
Source: http://www.sqlite.org/datatype3.html
comment:6 by , 11 years ago
Triage Stage: | Accepted → Ready for checkin |
---|
Everything looks good.
Thanks for finding all the references too, this is very valuable.
I'll mark the ticket as ready for checkin
and commit it later today if no one does it before.
comment:7 by , 11 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Opened a pull request here: https://github.com/django/django/pull/1949