[1.0.X] Fixed resolve_columns so that pagination works again on Oracle GeoQuerySets; properly set svn:ignore on sitemaps subdir.

Backport of r9338 from trunk.


git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.0.X@9339 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Justin Bronn 2008-11-05 18:24:55 +00:00
parent dca8dbaf86
commit ca5a2b0930

View File

@ -172,11 +172,21 @@ class GeoQuery(sql.Query):
""" """
values = [] values = []
aliases = self.extra_select.keys() aliases = self.extra_select.keys()
index_start = len(aliases)
values = [self.convert_values(v, self.extra_select_fields.get(a, None)) # Have to set a starting row number offset that is used for
for v, a in izip(row[:index_start], aliases)] # determining the correct starting row index -- needed for
# doing pagination with Oracle.
rn_offset = 0
if SpatialBackend.oracle: if SpatialBackend.oracle:
# This is what happens normally in Oracle's `resolve_columns`. if self.high_mark is not None or self.low_mark: rn_offset = 1
index_start = rn_offset + len(aliases)
# Converting any extra selection values (e.g., geometries and
# distance objects added by GeoQuerySet methods).
values = [self.convert_values(v, self.extra_select_fields.get(a, None))
for v, a in izip(row[rn_offset:index_start], aliases)]
if SpatialBackend.oracle:
# This is what happens normally in OracleQuery's `resolve_columns`.
for value, field in izip(row[index_start:], fields): for value, field in izip(row[index_start:], fields):
values.append(self.convert_values(value, field)) values.append(self.convert_values(value, field))
else: else:
@ -187,7 +197,7 @@ class GeoQuery(sql.Query):
""" """
Using the same routines that Oracle does we can convert our Using the same routines that Oracle does we can convert our
extra selection objects into Geometry and Distance objects. extra selection objects into Geometry and Distance objects.
TODO: Laziness. TODO: Make converted objects 'lazy' for less overhead.
""" """
if SpatialBackend.oracle: if SpatialBackend.oracle:
# Running through Oracle's first. # Running through Oracle's first.