odoo / o-spreadsheet

Other
195 stars 44 forks source link

[FW][FIX] evaluation: Ensure dependency invalidation for array formulas #5212

Closed fw-bot closed 1 week ago

fw-bot commented 1 week ago

How to reproduce: -> see the attached test

What is happening? During the evaluation of SUMIFS, it will fetch its ranges. First it will first fetch an empty range (E4:E7) since MUNIT hasn't been evaluated yet. Afterwards, it will fetch H4, which in turn will request C4 and therefore force the evaluation of the spreaded function MUNIT.

AT this point, there is a disparity of values because the values of the range (E4:E7) have changed. To address those situations, the evaluator invalidates the dependencies of all the spreaded zone. Which means marking A1 to be recomputed.

Unfortunately, A1 is still being evaluated and since #4589 (specifically commit 8d22e86) we remove the cell from the queue after we evaluted it.

This revision changes the approach taken in 8d22e86 to allow legitimate invalidations take place while avoiding useless reevaluations.

Task: 4252800

Description:

description of this task, what is implemented and why it is implemented that way.

Task: TASK_ID

review checklist

Forward-Port-Of: odoo/o-spreadsheet#5211 Forward-Port-Of: odoo/o-spreadsheet#5209

robodoo commented 1 week ago

Pull request status dashboard

fw-bot commented 1 week ago

@rrahir @LucasLefevre cherrypicking of pull request odoo/o-spreadsheet#5209 failed.

stdout:

Auto-merging src/functions/index.ts
CONFLICT (content): Merge conflict in src/functions/index.ts
Auto-merging src/plugins/ui_core_views/cell_evaluation/evaluator.ts
Auto-merging tests/evaluation/evaluation_formula_array.test.ts
CONFLICT (content): Merge conflict in tests/evaluation/evaluation_formula_array.test.ts

Either perform the forward-port manually (and push to this branch, proceeding as usual) or close this PR (maybe?).

In the former case, you may want to edit this PR message as well.

:warning: after resolving this conflict, you will need to merge it via @robodoo.

More info at https://github.com/odoo/odoo/wiki/Mergebot#forward-port

rrahir commented 1 week ago

@robodoo r+