Thursday, May 5, 2016

Beginning

First of all I went on github (my nick there is shagalla) and cloned a server code from my tree into the new branch. I called it 10.2-mdev9197 and I'm going to do all my work on it. As I had worked with MariaDB server before on my previous projects (on implementation of common table expressions), building server code was really not so difficult for me.
So I solved my first task successfully during the community bonding period!

Now it's time to talk about my project in detail.
If you are interested in it you can read about it on jira, just click this link -> click 

As you see, it's an optimization work and its main goal is to make the query faster. Now it's slow because any view/derived table defined by a grouping query (look at the example on jira) is first materialized in a temporary table.

To solve this problem I suggested to divide my work into a few issues:

1. Implementation of the case with separable conditions (conjunctive conditions that depend only on view/derived table columns)
2. Implementation of the case with non-separable conditions (there are no conjunctive conditions depending only on the columns of view/derived table, but still some restrictive condition depending only on view/derived table can be extracted from the where clause)
3. Building item clones (it's necessary for issue 2)
4. Implementation of the case with semantically separable conditions
5. Implementation of the case with separable conditions when several views are used
6. Detection of semantically separable conditions for comparison predicates.

I'm going to give you information in detail while considering each issue.

I talked with igor_seattle and we decided to start with building item clones.
In general case building a clone for an item is quite a big task (e.g. when the item contains subquery), but it's not so difficult for simple predicates and functions (like inequality, addition) if we use copy constructors.

In my next post I'm going to tell you about my progress in solving this particular problem.

No comments:

Post a Comment