--- a/web/lib/django/db/backends/mysql/base.py Wed May 19 17:43:59 2010 +0200
+++ b/web/lib/django/db/backends/mysql/base.py Tue May 25 02:43:45 2010 +0200
@@ -5,6 +5,7 @@
"""
import re
+import sys
try:
import MySQLdb as Database
@@ -24,6 +25,7 @@
from MySQLdb.converters import conversions
from MySQLdb.constants import FIELD_TYPE, FLAG, CLIENT
+from django.db import utils
from django.db.backends import *
from django.db.backends.signals import connection_created
from django.db.backends.mysql.client import DatabaseClient
@@ -82,22 +84,30 @@
def execute(self, query, args=None):
try:
return self.cursor.execute(query, args)
+ except Database.IntegrityError, e:
+ raise utils.IntegrityError, utils.IntegrityError(*tuple(e)), sys.exc_info()[2]
except Database.OperationalError, e:
# Map some error codes to IntegrityError, since they seem to be
# misclassified and Django would prefer the more logical place.
if e[0] in self.codes_for_integrityerror:
- raise Database.IntegrityError(tuple(e))
+ raise utils.IntegrityError, utils.IntegrityError(*tuple(e)), sys.exc_info()[2]
raise
+ except Database.DatabaseError, e:
+ raise utils.DatabaseError, utils.DatabaseError(*tuple(e)), sys.exc_info()[2]
def executemany(self, query, args):
try:
return self.cursor.executemany(query, args)
+ except Database.IntegrityError, e:
+ raise utils.IntegrityError, utils.IntegrityError(*tuple(e)), sys.exc_info()[2]
except Database.OperationalError, e:
# Map some error codes to IntegrityError, since they seem to be
# misclassified and Django would prefer the more logical place.
if e[0] in self.codes_for_integrityerror:
- raise Database.IntegrityError(tuple(e))
+ raise utils.IntegrityError, utils.IntegrityError(*tuple(e)), sys.exc_info()[2]
raise
+ except Database.DatabaseError, e:
+ raise utils.DatabaseError, utils.DatabaseError(*tuple(e)), sys.exc_info()[2]
def __getattr__(self, attr):
if attr in self.__dict__:
@@ -113,8 +123,11 @@
update_can_self_select = False
allows_group_by_pk = True
related_fields_match_type = True
+ allow_sliced_subqueries = False
class DatabaseOperations(BaseDatabaseOperations):
+ compiler_module = "django.db.backends.mysql.compiler"
+
def date_extract_sql(self, lookup_type, field_name):
# http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html
if lookup_type == 'week_day':
@@ -214,6 +227,9 @@
second = '%s-12-31 23:59:59.99'
return [first % value, second % value]
+ def max_name_length(self):
+ return 64
+
class DatabaseWrapper(BaseDatabaseWrapper):
operators = {
@@ -242,7 +258,7 @@
self.client = DatabaseClient(self)
self.creation = DatabaseCreation(self)
self.introspection = DatabaseIntrospection(self)
- self.validation = DatabaseValidation()
+ self.validation = DatabaseValidation(self)
def _valid_connection(self):
if self.connection is not None:
@@ -262,22 +278,22 @@
'use_unicode': True,
}
settings_dict = self.settings_dict
- if settings_dict['DATABASE_USER']:
- kwargs['user'] = settings_dict['DATABASE_USER']
- if settings_dict['DATABASE_NAME']:
- kwargs['db'] = settings_dict['DATABASE_NAME']
- if settings_dict['DATABASE_PASSWORD']:
- kwargs['passwd'] = settings_dict['DATABASE_PASSWORD']
- if settings_dict['DATABASE_HOST'].startswith('/'):
- kwargs['unix_socket'] = settings_dict['DATABASE_HOST']
- elif settings_dict['DATABASE_HOST']:
- kwargs['host'] = settings_dict['DATABASE_HOST']
- if settings_dict['DATABASE_PORT']:
- kwargs['port'] = int(settings_dict['DATABASE_PORT'])
+ if settings_dict['USER']:
+ kwargs['user'] = settings_dict['USER']
+ if settings_dict['NAME']:
+ kwargs['db'] = settings_dict['NAME']
+ if settings_dict['PASSWORD']:
+ kwargs['passwd'] = settings_dict['PASSWORD']
+ if settings_dict['HOST'].startswith('/'):
+ kwargs['unix_socket'] = settings_dict['HOST']
+ elif settings_dict['HOST']:
+ kwargs['host'] = settings_dict['HOST']
+ if settings_dict['PORT']:
+ kwargs['port'] = int(settings_dict['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(settings_dict['DATABASE_OPTIONS'])
+ kwargs.update(settings_dict['OPTIONS'])
self.connection = Database.connect(**kwargs)
self.connection.encoders[SafeUnicode] = self.connection.encoders[unicode]
self.connection.encoders[SafeString] = self.connection.encoders[str]