Consider the scenario.
MCS updates two records instead of only one.
MDB optimizes WHERE conditions removing (i is null and 42 is null) block and pushes the the whole WHERE predicate using ha_mcs::cond_push(). cond_push() ignores pushes for UPDATEs thus MCS has an empty WHERE conditions producing CSEP in doUpdateDelete().getSelectPlan().
JFYI MDB both sends WHERE predicate using cond_push() and SELECT_LEX for some queries but doesn't for others.
We need to refactor cond_push to use handler instance to safe conditions for UPDATEs and push them down into doUpdateDelete().getSelectPlan().
NB There should be no cond_push calls for join conditions so the conditions pushed belongs to one table only.