Hello,
I am a second year student currently attending University Politehnica of Bucharest and I am interested in contributing to MariaDB during this year's Google Summer of Code.
I have looked at the ideas you published in the Knowledge Base [1] and two projects caught my attention. The first one is related to the import and export process related to dynamic columns [2] and the second one is related to the GIS enhancements [3].
I am willing to implement both of them, but I am not sure whether the time will allow me properly implement both of them. I cannot estimate how much effort do these projects require as I am still trying to become acquainted with the code base. I hope I am not underestimating the projects and some guidance from one of the mentors (Oleksandr Byelkin, Georg Richter or Alexey Botchkov - Holyfoot) is certainly welcome.
I will focus on "Import and export popular data formats from and to dynamic columns" and as soon as I am done with this one, hopefully I will be able to work on GIS enhancements as well.
Before continuing, I would like to clarify some aspects related to these projects.
Import and export popular data formats from and to dynamic columns:
- Can be split in four main tasks:
a) adding support for arrays (vectors) in dynamic columns. Currently, dynamic columns only store dictionaries (maps);
b) implement a library that can import (parse) and export (build in a specific format) data to and from dynamic columns;
c) provide interface to access to the new import and export mechanism;
d) provide unit tests for the new features.
- The second part (b) of the project is mostly standalone and requires little edits to the project and the third part (c) will be mostly shared by the server and the C connector.
- The outcome of (b) is going to be a minimal parsing and building library for various formats.
- Some of the formats that I plan to support are: JSON, XML, CSV (maybe XLS too?), PHP Array, YAML, SQL (export as INSERT INTO statement?), etc. One of the key aspects I have to keep in mind when designing the library is to provide a extensible interface to quickly implement new formats in the future.
- Probably, most of my work will be located in:
- ./server/sql/item_*.(cc|h) - implement user defined functions
- ./server/mysys/ma_dyncol.c - provide interface for user defined functions
- ./server/include/ma_dyncol.h
- ./mariadb-connector-c/libmariadb/mariadb_dyncol.c - provide interface in C Connector
- ./mariadb-connector-c/include/mariadb_dyncol.h
GIS enhancements:
- This project is based on extending the current functionality related to GIS. I am not very familiar with GIS and I still have to do more research based on documents [4], [5] and [6], but the biggest part of the project consists in defining user functions for handling GIS.
- I found this compliance test suite [7] for PostGIS that may come in handy.
Also, I have a few other questions related to how should I proceed:
- I have already read the introductory developers guide [8], the contributing guidelines [9] and will submit the MariaDB Contributor Agreement [10] as soon as possible. Is there anything else I should do before getting started?
- I found no template for Google Summer of Code applications. Is there anything in particular that mentors would like to see? I was thinking of organizing my application in multiple sections, some of the most important being: Synopsis, Benefits to the Users, Project Details, Deliverables, Project Schedule and my resume. I believe that I will receive more feedback related after I will have submitted my application.
- Most issues already have an assignee. Is it fine if I try and send pull requests for some of those bugs?
I could not decide between whether I should send this mail to discuss or developers mailing list. Hopefully, I chose the right one.
I am sorry for my long email and thank you for attention. I am looking for feedback, so please do not hesitate to send me any suggestion you might have.
Best regards,
Dan Ungureanu