Thursday, May 28, 2026
1 change · 19.0
Enhancements to existing features
This change speeds up historical Inventory Valuation reports by making key valuation lookups more efficient on large databases. For businesses with many valuation records, reports that previously stalled or took more than 20 minutes can now complete in a few minutes.
Original PR description
The Inventory Valuation report at a past date rebuilds historical value by tracing stock moves. Two product.value lookups run on the hot path and both hit unindexed columns: -…
The Inventory Valuation report at a past date rebuilds historical value by tracing stock moves. Two product.value lookups run on the hot path and both hit unindexed columns: - stock.move._get_manual_value() searches product.value by move_id for every traced move; - product.product._get_last_product_value() searches product.value by product_id. product.value declares neither column with an index, so each lookup performs a sequential scan of the whole table. This is harmless on small tables but degrades sharply as product.value grows (one row is written per manual standard-price/move revaluation). On a database where product.value held ~9.6M rows, the per-move move_id lookup seq-scans the entire table only to return nothing (no row carries a move_id), repeated for every traced move, so the historical report never completes. Index product_id (dense) and move_id (btree_not_null, since it is null for every manual revaluation row). Each lookup then becomes an index scan. Measured on a ~9.6M-row product.value, historical valuation report, single date: | product.value lookup | without index | with index | | --------------------------- | ------------------------- | ------------------ | | by product_id (DISTINCT ON) | ~0.56s (1.7 GB seq scan) | index scan | | by move_id, per traced move | full seq scan, returns 0 | index scan | | report (~3.1M moves traced) | never completes (>20 min) | completes (~3 min) | --- I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr