Opened 16 years ago
Closed 16 years ago
#12132 closed (fixed)
possibly unneccessary unique_check for primary key fields is models
| Reported by: | Mark | Owned by: | nobody |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | soc2009/model-validation |
| Severity: | Keywords: | model-validation validation unique | |
| Cc: | Triage Stage: | Unreviewed | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
Every time a clean() method of the model instance is run, validate_unique() is performed. It seems, that _get_unique_checks doesn't get into account, that the primary key doesn't need such a check. The sql that is run during the check is meaningless (it is only meaningless if we are checking a primary key field):
SELECT (1) AS "a" FROM "test_models_testmodel" WHERE ("test_models_testmodel"."id" = 1 AND NOT ("test_models_testmodel"."id" = 1 ))
This results in unnecessary database hits and (possible) performance degradation. I have put together a simple test rack, so that the effect can be easily observed. It's not a real test case, but I really hope, that it will be sufficient.
If I understand correctly, it can be easily fixed, by checking if a field is a primary key inside the _get_unique_checks model instance method (patch included).
Attachments (2)
Change History (3)
by , 16 years ago
| Attachment: | test_validation.tar.gz added |
|---|
comment:1 by , 16 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |
A runnable test and an app directory