From b6697327280e9a2cca668014f911ea2ce8ac6c0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sat, 22 Jun 2013 00:23:19 +0200 Subject: [PATCH] Reduce IN_MAX by number of columns in UNIQUE validation issue3230 review934002 --- trytond/model/modelsql.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/trytond/model/modelsql.py b/trytond/model/modelsql.py index 7db78650ef..874b3a1e02 100644 --- a/trytond/model/modelsql.py +++ b/trytond/model/modelsql.py @@ -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 + ' '