Uploaded image for project: 'MariaDB ColumnStore'
  1. MariaDB ColumnStore
  2. MCOL-4765

Allow condition pushdown to ColumnStore for a cross-engine UPDATE on a foreign table




      Fix for 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:

      -- create a columnstore and an innodb table
      drop table if exists mcs; drop table if exists idb; 
      create table mcs(a int, b int) engine=columnstore;
      create table idb(a int, b int) engine=innodb;
      -- insert some rows
      insert into mcs(a,b) values(1,2),(2,3),(4,5);
      insert into idb(a,b) values(1,2),(2,3),(4,5);
      update idb dest join mcs src on dest.a=src.a set dest.b=src.b where src.a < 3;

      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.


        Issue Links



              maxmether Max Mether
              tntnatbry Gagan Goel (Inactive)
              0 Vote for this issue
              2 Start watching this issue



                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.