Commit b91067d9 authored by Claude Paroz's avatar Claude Paroz
Browse files

[1.5.x] Revert "Fixed #19895 -- Made second iteration over invalid queryset raise an exception too"

This reverts commit d1e87eb3.
This commit was the cause of a memory leak. See ticket for more details.
Thanks Anssi Kääriäinen for identifying the source of the bug.
parent 5c788770
Loading
Loading
Loading
Loading
+1 −13
Original line number Diff line number Diff line
@@ -102,7 +102,7 @@ class QuerySet(object):
            len(self)

        if self._result_cache is None:
            self._iter = self._safe_iterator(self.iterator())
            self._iter = self.iterator()
            self._result_cache = []
        if self._iter:
            return self._result_iter()
@@ -337,18 +337,6 @@ class QuerySet(object):

            yield obj

    def _safe_iterator(self, iterator):
        # ensure result cache is cleared when iterating over a queryset
        # raises an exception
        try:
            for item in iterator:
                yield item
        except StopIteration:
            raise
        except Exception:
            self._result_cache = None
            raise

    def aggregate(self, *args, **kwargs):
        """
        Returns a dictionary containing the calculations (aggregation)
+1 −6
Original line number Diff line number Diff line
@@ -2,7 +2,7 @@ from __future__ import absolute_import, unicode_literals

from datetime import datetime

from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned, FieldError
from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned
from django.db.models.fields import Field, FieldDoesNotExist
from django.test import TestCase, skipIfDBFeature, skipUnlessDBFeature
from django.utils import six
@@ -639,8 +639,3 @@ class ModelTest(TestCase):
        Article.objects.bulk_create([Article(headline=lazy, pub_date=datetime.now())])
        article = Article.objects.get()
        self.assertEqual(article.headline, notlazy)

    def test_invalid_qs_list(self):
        qs = Article.objects.order_by('invalid_column')
        self.assertRaises(FieldError, list, qs)
        self.assertRaises(FieldError, list, qs)
 No newline at end of file