Opened 18 months ago
Last modified 17 months ago
#34659 closed Uncategorized
mysql backend creates queries using CONVERT_TZ even when this is not supported — at Version 5
Reported by: | Klaas van Schelven | Owned by: | nobody |
---|---|---|---|
Component: | Database layer (models, ORM) | Version: | 4.2 |
Severity: | Normal | Keywords: | |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description (last modified by )
To test whether a mysql server has the zoneinfo database loaded (feature name: has_zoneinfo_database
), the following code is run:
CONVERT_TZ('2001-01-01 01:00:00', 'UTC', 'UTC') IS NOT NULL
However, this test is not actually used (i.e. there is no condition on the feature being True) when generating sql, despite the fact that the generated sql contains something that we know will evaluate to NULL
, namely, the very same CONVERT_TZ
mentioned in the above.
This shows up when filtering like so:
Foo.objects(some_datetimefield__date="2023-06-16")
which evaluates to the empty queryset, despite there being such objects. On a mysql database without the zoneinfo database loaden, and with USE_TZ = True
, obviously
Change History (5)
comment:1 by , 18 months ago
Description: | modified (diff) |
---|
comment:2 by , 18 months ago
Description: | modified (diff) |
---|
comment:3 by , 18 months ago
Description: | modified (diff) |
---|
comment:4 by , 18 months ago
Description: | modified (diff) |
---|
comment:5 by , 18 months ago
Description: | modified (diff) |
---|