#7420 closed (fixed)
Further generalization of DB backend (mis)features
| Reported by: | Ramiro Morales | Owned by: | Adrian Holovaty |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | dev |
| Severity: | Keywords: | databasefeatures database operations microseconds oracle mysql | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
The patch attached:
- Adds four new atttibutes to DatabaseFeatures (also setting the correct values for the backends bundled with Django):
supports_usecs # default value: True time_field_needs_date # default value: False interprets_empty_strings_as_nulls # default value: False date_field_supports_time_value # default value: True
- Moves
prep_for_like_queryfrom a global lambda form atdjango/db/backends/__init__.py) to a method of DatabaseOperations
- Modifies
contrib/sessions/backends/db.pyanddjango/db/models/fields/__init__.pyto use them instead of tests of the styleif settings.DATABASE_BACKEND == 'oracle':....
If I understand things correctly this is a desirable thing to have.
Additionally this would allow moving forward with a MS SQL Server (that shares one trait with Oracle and another with MySQL and that has a particular LIKE query syntax) as a truly external backends i.e. reducing the need to patch Django itself to a minimum.
Tested with the Django trunk test suite on a Debian Etch -based environment:
- pysqlite2 2.3.2 + sqlite 3.3.8
- MySQLdb 1.2.1 + MySQL 5.0.32
- psycopg2 2.0.5 + PostgreSQL 8.1.11
(no Oracle installation at hand :( but hopefully somebody will be able test with that backend and report below)
Attachments (1)
Change History (5)
by , 17 years ago
| Attachment: | db-be-features-r7583.diff added |
|---|
comment:1 by , 17 years ago
| Summary: | Further generalization of DB backed (mis)features → Further generalization of DB backend (mis)features |
|---|
comment:2 by , 17 years ago
| Owner: | changed from to |
|---|---|
| Status: | new → assigned |
| Triage Stage: | Unreviewed → Accepted |
comment:3 by , 17 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
comment:4 by , 17 years ago
Note to ramiro: I didn't include the change to django/contrib/sessions/backends/db.py, as I wasn't sure what that was doing. If this is a problem, please open a new ticket with that as a separate patch, with an explanation of why it's needed.
(In [7643]) Fixed #7420 -- Abstracted some more database options into DatabaseFeatures -- supports_usecs, time_field_needs_date, interprets_empty_strings_as_nulls and date_field_supports_time_value -- and changed various hard-coded 'if DATABASE_BACKEND == oracle' statements to use the new options. Thanks to ramiro for the patch