Skip to content

Commit fcc6825

Browse files
committed
[IMP] orm.recompute_fields: use new pg.query_ids
This code in recompute_fields has been made re-usable in a new util pg.query_ids. Use that.
1 parent fa800e8 commit fcc6825

File tree

1 file changed

+8
-20
lines changed

1 file changed

+8
-20
lines changed

src/util/orm.py

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
from .exceptions import MigrationError
4343
from .helpers import table_of_model
4444
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
4646

4747
# python3 shims
4848
try:
@@ -288,27 +288,16 @@ def recompute_fields(cr, model, fields, ids=None, logger=_logger, chunk_size=256
288288
Model = env(cr)[model] if isinstance(model, basestring) else model
289289
model = Model._name
290290

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,
295297
)
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
309298

299+
count = len(ids_)
310300
if not count:
311-
cr.execute("DROP TABLE IF EXISTS _upgrade_rf")
312301
return
313302

314303
_logger.info("Computing fields %s of %r on %d records", fields, model, count)
@@ -338,7 +327,6 @@ def get_ids():
338327
else:
339328
flush(records)
340329
invalidate(records)
341-
cr.execute("DROP TABLE IF EXISTS _upgrade_rf")
342330

343331

344332
class iter_browse(object):

0 commit comments

Comments
 (0)