Reduce IN_MAX by number of columns in UNIQUE validation

issue3230
review934002
This commit is contained in:
Cédric Krier committed 2013-06-22 00:23:19 +02:00
1 parent c98af564f6
commit b669732728
1 file changed
+5 -3
+5 -3
View File
@@ -2045,12 +2045,14 @@ class ModelSQL(ModelStorage):
match = _RE_UNIQUE.match(sql)
if match:
sql = match.group(1)
columns = sql.split(',')
sql_clause = ' AND '.join('%s = %%s'
% i for i in sql.split(','))
% i for i in columns)
sql_clause = '(id != %s AND ' + sql_clause + ')'
for i in range(0, len(ids), cursor.IN_MAX):
sub_ids = ids[i:i + cursor.IN_MAX]
in_max = cursor.IN_MAX / (len(columns) + 1)
for i in range(0, len(ids), in_max):
sub_ids = ids[i:i + in_max]
red_sql, red_ids = reduce_ids('id', sub_ids)
cursor.execute('SELECT id,' + sql + ' '