MCOL-1482 allows for a foreign table to be updated in a cross-engine UPDATE statement involving a ColumnStore table.
However, the current performance for such a cross-engine foreign table UPDATE will be very slow since a full-table scan on ColumnStore is performed. As an example, consider the following scenario:
Currently, server makes the handler::rnd_init() call before the handler::cond_push() call. This causes the ColumnStore execution plan to be created (which is created during the call to handler::rnd_init()) without the WHERE predicate pushed-down to CS. As a result, for the 2 matching InnoDB records, server fetches all 3 CS records instead of 2 which satisfy the WHERE predicate, which is wasteful.
The aim of this task is to pushdown all possible conditions (WHERE predicates as well as JOIN ON expressions) to CS before the creation of the CS execution plan.