Midterm Evaluation Week

WEEK 6 : JUNE 20th TO JUNE 27th 2016

This week is the Midterm evaluation week for my project. I intend to continue working on the call back functions ( xxx_index(…) ) for the index format and while communicating the work I have done so far. I modified dynamic_column_create_many_internal_fmt(…) to write mariadb_dyncol_create_many_index(…).

After, I modified mariadb_dyncol_list_named(…) to accommodate the index format when listing columns in the packed string. Finally, I introduced the format parameter in the dynamic_column_exists_internal(…) to check existence of the column in the packed string using a particular format at a given time. Please check my code on github on the functions written and accompanying unit tests .

Pre Midterm Evaluation Period

WEEK 1: MAY 23rd TO MAY 29th 2016

During this week, I started studying the include/ma_dyncol.h and libmariadb/ma_dyncol.c files as my mentors advised.

WEEK 2 & 3 : MAY 30th TO JUNE 12th 2016

After a period of rigourously studying include/ma_dyncol.h and libmariadb/ma_dyncol.c and communications with my Mentors, I have finally conceived a new format ( Index Format ) which will help build a more encompassing library for dynamic columns. The Index Format will look like this;

/*
 Index format:
 ===================
  * Fixed header part
    1 byte flags:
      0,1 bits – <offset size> – 2
      2,3 bit  – 11 (means new index format)
      4-7 bits – 0
    2 bytes column counter
  * Column directory sorted by column number, each entry contains:
    2 bytes column number
    <offset size> bytes (2-5) combined offset from beginning of
      the data segment + 4 bit type
  * Data of above columns size of data and length depend on type
*/
Bits 2 and 3 in the Flag Byte will hold 1 indicative of the fact that dynamic columns are being stored using the Index Format (not the others). The offset bytes is between 2 to 5 Bytes just as in the case of the String format. Also, 4 bits are used to store type information so that 16 ( =2^4 ) different types can be accommodated by this Index Format.
In order to check how the preceeding Numeric and String formats were defined, please check the opening comments of ma_dyncol.c 
Now that my Mentor has approved this data structure for the upcoming Index Format, I intend to dive deep into implementation/coding this coming week.

WEEK 4 & 5 : JUNE 13th TO JUNE 19th 2016

  • Commented the Index format data structure into mysys/ma_dyncol.c. The call back functions for the Index format will look thus xxx_index(…)
  • Described the Index format in fmt_data[] array of service functions as shown below,
    {
    FIXED_HEADER_SIZE,
    COLUMN_NUMBER_SIZE,
    sizeof(uint),
    MAX_OFFSET_LENGTH_NM,
    &name_size_index,
    &column_sort_index,
    &check_limit_index,
    &set_fixed_header_index,
    &put_header_entry_index,
    &plan_sort_index,
    &dynamic_column_offset_bytes_index,
    &type_and_offset_read_index
    }
  • Wrote sort function for plan for index format viz plan_sort_index(…)
  • Wrote function to compute name size for index format viz name_size_index(…)
  • Comparator function for references on column numbers for qsort viz column_sort_index(…)
  • Check limit function for index format viz check_limit_index(…)
  • Write index format static header part viz set_fixed_header_index(…)
  • Function to read type and offset information for index format viz type_and_offset_read_store(…)
  • Write index format header entry viz put_header_entry_index(…)
  • Function to store type and offset information for index format viz type_and_offset_store_index(…)
  • Function to compute the size of offset bytes for dynamic column under index format viz dynamic_column_offset_bytes_index(…)
  • Function to read offset and type information from index entry in index format viz type_and_offset_read_index(…)
  • Right now I did run make successfully and BUILD_STATUS is OK

GSoC 2016 CONC-125 Project

This summer, I will be working with the MariaDB foundation under the umbrella of Google Summer of Code to provide some enhancements to MariaDB Dynamic columns. I will be mentored by Byelkin Sanja and George Ritcher. During Community Bonding, I got to build the MariaDB source code on OS X then I went on to study mysys/ma_dyncol.c
include/ma_dyncol.h to understand the implementation of dynamic column types.

Next thing will be to discuss with my mentors on our work plan and how we will implement the new dynamic column format. I have created a Github branch called CONC-125 in which I will be pushing my code. I will update this blog every week to report on our progress with this project.