diff options
| author | Olivier Dony <odo@openerp.com> | 2010-03-30 19:26:03 +0200 |
|---|---|---|
| committer | Julien Thewys <jth@openerp.com> | 2010-03-30 19:26:03 +0200 |
| commit | a6a0a06867a3fe1ece9be829f36ea05a8e9b4e8e (patch) | |
| tree | 615d601a78f486b3f5c5bb742b72a8020e265add /bin/sql_db.py | |
| parent | f09f4dc4ce27314aac440426524bb399edfecb14 (diff) | |
[ADD] utility methods to split large lists of ids for use in IN clauses
bzr revid: odo@openerp.com-20100330172603-gbv1zjcqmqeabfbt
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 |
