Commit 30c846bf authored by Aymeric Augustin's avatar Aymeric Augustin
Browse files

Fixed #6669 -- Ensured database connections are marked as dirty by...

Fixed #6669 -- Ensured database connections are marked as dirty by CursorDebugWrapper.execute/executemany. Refs #9964. Thanks james at 10gic net for the report and Claude Paroz for the patch.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@17368 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent e1ba9111
Loading
Loading
Loading
Loading
+6 −1
Original line number Diff line number Diff line
@@ -16,9 +16,12 @@ class CursorWrapper(object):
        self.cursor = cursor
        self.db = db

    def __getattr__(self, attr):
    def set_dirty(self):
        if self.db.is_managed():
            self.db.set_dirty()

    def __getattr__(self, attr):
        self.set_dirty()
        if attr in self.__dict__:
            return self.__dict__[attr]
        else:
@@ -31,6 +34,7 @@ class CursorWrapper(object):
class CursorDebugWrapper(CursorWrapper):

    def execute(self, sql, params=()):
        self.set_dirty()
        start = time()
        try:
            return self.cursor.execute(sql, params)
@@ -47,6 +51,7 @@ class CursorDebugWrapper(CursorWrapper):
            )

    def executemany(self, sql, param_list):
        self.set_dirty()
        start = time()
        try:
            return self.cursor.executemany(sql, param_list)
+8 −0
Original line number Diff line number Diff line
@@ -4,6 +4,7 @@ from django.core.exceptions import ImproperlyConfigured
from django.db import connection, transaction
from django.db.transaction import commit_on_success, commit_manually, TransactionManagementError
from django.test import TransactionTestCase, skipUnlessDBFeature
from django.test.utils import override_settings
from django.utils.unittest import skipIf

from .models import Mod, M2mA, M2mB
@@ -166,6 +167,13 @@ class TestTransactionClosing(TransactionTestCase):
        except:
            self.fail("A transaction consisting of a failed operation was not closed.")

    @override_settings(DEBUG=True)
    def test_failing_query_transaction_closed_debug(self):
        """
        Regression for #6669. Same test as above, with DEBUG=True.
        """
        self.test_failing_query_transaction_closed()


class TestManyToManyAddTransaction(TransactionTestCase):
    def test_manyrelated_add_commit(self):