diff options
| author | Olivier Dony <odo@openerp.com> | 2010-03-30 19:26:03 +0200 |
|---|---|---|
| committer | Olivier Dony <odo@openerp.com> | 2010-03-30 19:26:03 +0200 |
| commit | 01578fff22c482fbfd4c818b50fd364461be892f (patch) | |
| tree | 4fc48a9f641abaf641ead1ab731ba9cad4b4ebb5 /bin/sql_db.py | |
| parent | 0f51cf639b4970e0636fc79c0213faf749e75d00 (diff) | |
[ADD] utility methods to split large lists of ids for use in IN clauses
bzr revid: odo@openerp.com-20100330172603-ty878ds2i9oa33zq
Diffstat (limited to 'bin/sql_db.py')
| -rw-r--r-- | bin/sql_db.py | 8 |
1 files changed, 7 insertions, 1 deletions
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 |
