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