Commit ca5a2b09 authored by Justin Bronn's avatar Justin Bronn
Browse files

[1.0.X] Fixed `resolve_columns` so that pagination works again on Oracle...

[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
parent dca8dbaf
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -172,11 +172,21 @@ class GeoQuery(sql.Query):
        """
        values = []
        aliases = self.extra_select.keys()
        index_start = len(aliases)

        # Have to set a starting row number offset that is used for
        # determining the correct starting row index -- needed for
        # doing pagination with Oracle.
        rn_offset = 0
        if SpatialBackend.oracle:
            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[:index_start], aliases)]
                  for v, a in izip(row[rn_offset:index_start], aliases)]
        if SpatialBackend.oracle:
            # This is what happens normally in Oracle's `resolve_columns`.
            # This is what happens normally in OracleQuery's `resolve_columns`.
            for value, field in izip(row[index_start:], fields):
                values.append(self.convert_values(value, field))
        else:
@@ -187,7 +197,7 @@ class GeoQuery(sql.Query):
        """
        Using the same routines that Oracle does we can convert our
        extra selection objects into Geometry and Distance objects.
        TODO: Laziness.
        TODO: Make converted objects 'lazy' for less overhead.
        """
        if SpatialBackend.oracle:
            # Running through Oracle's first.