[ADD] utility methods to split large lists of ids for use in IN clauses

bzr revid: odo@openerp.com-20100330172603-gbv1zjcqmqeabfbt
This commit is contained in:
Olivier Dony
2010-03-30 19:26:03 +02:00
committed by Julien Thewys
parent f09f4dc4ce
commit a6a0a06867
2 changed files with 20 additions and 1 deletions
+7 -1
View File
@@ -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