From cb624b137772fbfbfd3882df4d632734259a1565 Mon Sep 17 00:00:00 2001
From: Malcolm Tredinnick <malcolm.tredinnick@gmail.com>
Date: Sun, 18 Mar 2007 19:16:47 +0000
Subject: [PATCH] Fixed #3747 -- Added a stricter MySQLdb version check so that
 (1, 2, 1, 'final', 2) passes and (1, 2, 1, 'gamma') does not. Also fixed a
 problem in the error reporting when the check fails.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@4751 bcc190cf-cafb-0310-a4f2-bffc1f526a37
---
 django/db/backends/mysql/base.py | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/django/db/backends/mysql/base.py b/django/db/backends/mysql/base.py
index cbe080144c..081c1185a5 100644
--- a/django/db/backends/mysql/base.py
+++ b/django/db/backends/mysql/base.py
@@ -10,8 +10,14 @@ try:
 except ImportError, e:
     from django.core.exceptions import ImproperlyConfigured
     raise ImproperlyConfigured, "Error loading MySQLdb module: %s" % e
-if Database.version_info < (1,2,1,'final',2):
-    raise ImportError, "MySQLdb-1.2.1p2 or newer is required; you have %s" % MySQLdb.__version__
+
+# We want version (1, 2, 1, 'final', 2) or later. We can't just use
+# lexicographic ordering in this check because then (1, 2, 1, 'gamma')
+# inadvertently passes the version test.
+version = Database.version_info
+if (version < (1,2,1) or (version[:3] == (1, 2, 1) and 
+        (len(version) < 5 or version[3] != 'final' or version[4] < 2))):
+    raise ImportError, "MySQLdb-1.2.1p2 or newer is required; you have %s" % Database.__version__
 
 from MySQLdb.converters import conversions
 from MySQLdb.constants import FIELD_TYPE