Opened 11 years ago
Closed 10 years ago
#22683 closed Cleanup/optimization (wontfix)
Schema tests and .extra queryset method
Reported by: | Maximiliano Robaina | Owned by: | nobody |
---|---|---|---|
Component: | Migrations | Version: | 1.7-beta-2 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Accepted | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
Running schema tests I caught an issue, more precisely, in test_add_field_default_transform
.
At the end, this test method is doing:
self.assertEqual(Author.objects.extra(where=["thing = 1"]).count(), 2)
The problem here is what in this where clause, the "thing" field must be quoted.
In firebird :
SELECT * FROM AUTHOR WHERE thing = 1 -- Here thing (in lowercase) and THING (in uppercase) are equivalent, are the same object
is different of:
SELECT * FROM AUTHOR WHERE "thing" = 1 -- field is quoted
For a more generic test I think we need to avoid use .extra method or another raw sql statement.
For a more complete discussion about it, see at
https://groups.google.com/forum/?hl=es#!topic/django-developers/KRHD77KlZ28
Change History (2)
comment:1 by , 11 years ago
Description: | modified (diff) |
---|---|
Triage Stage: | Unreviewed → Accepted |
Type: | Uncategorized → Cleanup/optimization |
Version: | 1.6 → 1.7-beta-2 |
comment:2 by , 10 years ago
Resolution: | → wontfix |
---|---|
Status: | new → closed |
Unfortunately, we can't use the model there - it doesn't have the added column (we can't mutate the models in the schema tests as they're used for multiple tests - the test just runs add_field on it, there's nothing in there that actually adds it to the model and runs contribute_to_class).
Given the fragility of moving this to add itself and then undo the damage shortly after, and the fact that this test is passing just fine on all backends AFAIK (unquoted names are valid SQL, and I'm not aware of any DBs with 'thing' as a keyword), I'm going to close this as WONTFIX. Someone should reopen if a database is discovered where this breaks.
Added some formatting to description.
We should be able to get rid of the raw sql there, since the model has the added column.