|
42 | 42 | from .exceptions import MigrationError |
43 | 43 | from .helpers import table_of_model |
44 | 44 | from .misc import chunks, log_progress, version_between, version_gte |
45 | | -from .pg import SQLStr, column_exists, format_query, get_columns, named_cursor |
| 45 | +from .pg import SQLStr, column_exists, format_query, get_columns, query_ids |
46 | 46 |
|
47 | 47 | # python3 shims |
48 | 48 | try: |
@@ -288,27 +288,16 @@ def recompute_fields(cr, model, fields, ids=None, logger=_logger, chunk_size=256 |
288 | 288 | Model = env(cr)[model] if isinstance(model, basestring) else model |
289 | 289 | model = Model._name |
290 | 290 |
|
291 | | - if ids is None: |
292 | | - query = format_query(cr, "SELECT id FROM {}", table_of_model(cr, model)) if query is None else SQLStr(query) |
293 | | - cr.execute( |
294 | | - format_query(cr, "CREATE UNLOGGED TABLE _upgrade_rf(id) AS (WITH query AS ({}) SELECT * FROM query)", query) |
| 291 | + ids_ = ids |
| 292 | + if ids_ is None: |
| 293 | + ids_ = query_ids( |
| 294 | + cr, |
| 295 | + format_query(cr, "SELECT id FROM {}", table_of_model(cr, model)) if query is None else SQLStr(query), |
| 296 | + itersize=2**20, |
295 | 297 | ) |
296 | | - count = cr.rowcount |
297 | | - cr.execute("ALTER TABLE _upgrade_rf ADD CONSTRAINT pk_upgrade_rf_id PRIMARY KEY (id)") |
298 | | - |
299 | | - def get_ids(): |
300 | | - with named_cursor(cr, itersize=2**20) as ncr: |
301 | | - ncr.execute("SELECT id FROM _upgrade_rf ORDER BY id") |
302 | | - for (id_,) in ncr: |
303 | | - yield id_ |
304 | | - |
305 | | - ids_ = get_ids() |
306 | | - else: |
307 | | - count = len(ids) |
308 | | - ids_ = ids |
309 | 298 |
|
| 299 | + count = len(ids_) |
310 | 300 | if not count: |
311 | | - cr.execute("DROP TABLE IF EXISTS _upgrade_rf") |
312 | 301 | return |
313 | 302 |
|
314 | 303 | _logger.info("Computing fields %s of %r on %d records", fields, model, count) |
@@ -338,7 +327,6 @@ def get_ids(): |
338 | 327 | else: |
339 | 328 | flush(records) |
340 | 329 | invalidate(records) |
341 | | - cr.execute("DROP TABLE IF EXISTS _upgrade_rf") |
342 | 330 |
|
343 | 331 |
|
344 | 332 | class iter_browse(object): |
|
0 commit comments