mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
5258fa649d
Summary: The problem: For a data-cleaning column (one that depends on itself) `doBulkUpdateRecord` calls `prevent_recalc(should_prevent=False)`` which is supposed to cause it to get calculated eventually. But before that it calls `_do_doc_action` -> `apply_doc_action` -> `_bring_lookups_up_to_date` which recalculates a lookup column which eventually calls `_recompute_step(allow_evaluation=False)` on the data-cleaning column which shouldn't really do anything significant but it both modifies the set `self.recompute_map[node]` and then removes it from the map after it's empty. The solution: when `allow_evaluation=False` and `self._prevent_recompute_map[node]` is nonempty, ensure `self.recompute_map[node]` is not modified, and check the map directly (instead of `dirty_rows` which can now be separate) to see if the set is empty before cleanup. Test Plan: Added a lookup column to test_self_trigger, ensured that this caused the test to fail without the other two changes in engine.py. Reviewers: paulfitz Reviewed By: paulfitz Subscribers: dsagal Differential Revision: https://phab.getgrist.com/D3006 |
||
---|---|---|
.. | ||
docker | ||
grist | ||
gen_js_schema.py | ||
install_tz.js | ||
requirements3.txt | ||
requirements.txt |