Commit 6d5f811c authored by Malcolm Tredinnick's avatar Malcolm Tredinnick
Browse files

[1.0.X] Fixed #10438 -- Fixed MySQL backend behaviour for UPDATE behaviour.

We need to know the number of rows that are matched by an UPDATE query,
not just the number of rows that are changed. In the relatively unlikely
event that somebody was using Django's cursor proxy and relying on the
previous behaviour, well, that isn't the case any longer. We need to
this version.

Thanks to Daniel Tang for pointing out the solution here.

Backport of r10532 from trunk.

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.0.X@10533 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 4915d1d0
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -22,7 +22,7 @@ if (version < (1,2,1) or (version[:3] == (1, 2, 1) and
    raise ImproperlyConfigured("MySQLdb-1.2.1p2 or newer is required; you have %s" % Database.__version__)

from MySQLdb.converters import conversions
from MySQLdb.constants import FIELD_TYPE, FLAG
from MySQLdb.constants import FIELD_TYPE, FLAG, CLIENT

from django.db.backends import *
from django.db.backends.mysql.client import DatabaseClient
@@ -258,6 +258,9 @@ class DatabaseWrapper(BaseDatabaseWrapper):
                kwargs['host'] = settings.DATABASE_HOST
            if settings.DATABASE_PORT:
                kwargs['port'] = int(settings.DATABASE_PORT)
            # We need the number of potentially affected rows after an
            # "UPDATE", not the number of changed rows.
            kwargs['client_flag'] = CLIENT.FOUND_ROWS
            kwargs.update(self.options)
            self.connection = Database.connect(**kwargs)
            self.connection.encoders[SafeUnicode] = self.connection.encoders[unicode]