From 01578fff22c482fbfd4c818b50fd364461be892f Mon Sep 17 00:00:00 2001 From: Olivier Dony Date: Tue, 30 Mar 2010 19:26:03 +0200 Subject: [ADD] utility methods to split large lists of ids for use in IN clauses bzr revid: odo@openerp.com-20100330172603-ty878ds2i9oa33zq --- bin/sql_db.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'bin/sql_db.py') diff --git a/bin/sql_db.py b/bin/sql_db.py index 17bfa340653..94336cde69a 100644 --- a/bin/sql_db.py +++ b/bin/sql_db.py @@ -63,7 +63,7 @@ re_into = re.compile('.* into "?([a-zA-Z_0-9]+)"? .*$'); sql_counter = 0 class Cursor(object): - IN_MAX = 1000 + IN_MAX = 1000 # decent limit on size of IN queries - guideline = Oracle limit __logger = logging.getLogger('db.cursor') def check(f): @@ -142,6 +142,12 @@ class Cursor(object): self.sql_into_log[res_into.group(1)][1] += delay return res + + def split_for_in_conditions(self, ids): + """Split a list of identifiers into one or more smaller tuples + safe for IN conditions, after uniquifying them.""" + return tools.misc.split_every(self.IN_MAX, set(ids)) + def print_log(self): global sql_counter sql_counter += self.sql_log_count -- cgit v1.2.3