#6666 closed (fixed)
Oracle test case failure
| Reported by: | Erin Kelly | Owned by: | Erin Kelly |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | dev |
| Severity: | Keywords: | oracle | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | no | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
[7150] introduced a test case that fails in Oracle. The traceback is:
File "/home/ikelly/projects/django.trunk/tests/regressiontests/datatypes/models.py", line ?, in regressiontests.datatypes.models.__test__.API_TESTS
Failed example:
Donut.objects.filter(baked_date__year=2006)
Exception raised:
Traceback (most recent call last):
File "/home/ikelly/projects/django.trunk/django/test/_doctest.py", line 1267, in __run
compileflags, 1) in test.globs
File "<doctest regressiontests.datatypes.models.__test__.API_TESTS[25]>", line 1, in <module>
Donut.objects.filter(baked_date__year=2006)
File "/home/ikelly/projects/django.trunk/django/db/models/query.py", line 108, in __repr__
return repr(self._get_data())
File "/home/ikelly/projects/django.trunk/django/db/models/query.py", line 483, in _get_data
self._result_cache = list(self.iterator())
File "/home/ikelly/projects/django.trunk/django/db/backends/oracle/base.py", line 123, in iterator
cursor.execute(full_query, params)
File "/home/ikelly/projects/django.trunk/django/db/backends/oracle/base.py", line 506, in execute
return Database.Cursor.execute(self, query, params)
DatabaseError: ORA-01830: date format picture ends before converting entire input string
The generated query and bind parameters are:
SELECT "DATATYPES_DONUT"."ID", "DATATYPES_DONUT"."NAME", "DATATYPES_DONUT"."IS_FROSTED", "DATATYPES_DONUT"."HAS_SPRINKLES", "DATATYPES_DONUT"."BAKED_DATE", "DATATYPES_DONUT"."BAKED_TIME", "DATATYPES_DONUT"."CONSUMED_AT"
FROM "DATATYPES_DONUT" WHERE ("DATATYPES_DONUT"."BAKED_DATE" BETWEEN :arg0 AND :arg1) ORDER BY "DATATYPES_DONUT"."CONSUMED_AT" ASC
('2007-01-01 00:00:00', '2007-12-31 23:59:59.999999')
Change History (12)
comment:1 by , 18 years ago
| Status: | new → assigned |
|---|
comment:2 by , 18 years ago
comment:3 by , 18 years ago
Yes, that's what it looks like to me. I plan to take a closer look at this later; I just opened the ticket so I wouldn't forget about it.
comment:4 by , 18 years ago
Doesn't that mean the bug existed prior to that change as well. I can't see what's changed if the database engine isn't "sqlite3" in that patch. It previously read
return ['%s-01-01 00:00:00' % value, '%s-12-31 23:59:59.999999' % value]
which has the same structure. Can somebody explain what silly typo I've overlooked here?
comment:5 by , 18 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|
comment:6 by , 18 years ago
Yeah, I don't think that [7150] introduced the bug. As far as I can see, the only reason the test case didn't fail before was that it didn't exist yet. It's strange, though, because there are other tests of year lookups that pass. I suspect this is probably an issue of DateField versus DateTimeField, and that it's probably trivial to fix, but I'll need to take a closer look.
comment:7 by , 18 years ago
| Resolution: | → fixed |
|---|---|
| Status: | assigned → closed |
comment:9 by , 18 years ago
Not sure, but probably. I just tried tried running the test case in qs-rf and got an ImportError:
File "/home/ikelly/projects/django.qs-rf/django/db/backends/oracle/base.py", line 103, in query_set_class
from django.db.models.query import EmptyResultSet, GET_ITERATOR_CHUNK_SIZE, quote_only_if_word
ImportError: cannot import name GET_ITERATOR_CHUNK_SIZE
AFAICT, the change I committed is entirely orthogonal to the changes in qs-rf, so there should be no trouble merging it in.
comment:12 by , 18 years ago
Replying to shan <shan_triv@hotmail.com>:
is this fix available in latest patch?
I'm not sure what patch you're referring to, but this fix has been in trunk since revision [7274], if that's what you mean.
Looks like this is because of the microseconds at the end of the second param, right?