Dan's Summer of Code My progress over the summer

Last week

This was the last week of the Google Summer of Code program. The organizers of the program advised us to do documentation and wrap-up the project. I went over my proposal to check that all objectives were met and I have also been looking through and my code and tried spotting any errors. Most of the errors fixed were reported by Scrutinizer.

Another task I took care of was to submit my final evaluation and prepare the code samples I have to submit next week.

I would like to thank to the phpMyAdmin team and my mentor, Marc Delisle, for giving me the opportunity to participate in Google Summer of Code and spending their time with me. I believe this is one of the best work experiences I ever had and I am proud of the library I wrote, the way it turned out and how I integrated it in phpMyAdmin.

I hope that time will permit me to continue contributing to phpMyAdmin.

To see my work over the summer, you can check out my library repository or the pull requests I submitted.

Week 12

This week, most of my work was done on sql-parser. I fixed a couple of bugs, wrote tests for the new features introduced over the last weeks, updated documentation (wiki as well) and moved the tools for tests and contexts generation to the sql-parser repository.

Next week is the last week week of Google Summer of Code and I will focus on fixing bugs and miscellaneous improvements (documentation and refactoring mostly).

To see my progress, you can check out my library repository or some of the pull requests I submitted this week.

Week 11

This week I found and fixed a a couple of bugs and rewrote an important part of the import mechanism of phpMyAdmin.

One of the most challenging tasks of this week was probably implementing the new import mechanism. The fact that it has to process so much data made performance a top priority.

At first, I tried using the standard lexer to delimit statements, but I failed. For huge queries (that are also buffered) parsing the query over and over again to check if a statement finished was too slow. I decided to write a specialized parser (BufferedQuery) that tries to parse only the most important parts of the query (comments, strings and delimiters) in order to be able to split the statements and execute them separately. At this moment is performs well and also fixes bug #11339 which was reopened due to some edge case not being handled correctly.

For the next week, I planned on finishing the query builder and write tests.

To see my progress, you can check out my library repository or some of the pull requests I submitted this week.

Week 10

This week I found and fixed a a couple of bugs, wrote a new formatting component in the parsing library and rewrote a part of the import mechanism to use the library I wrote.

One of the most challenging tasks of this week was probably writing the formatting library. I tried a couple of designs and ended up rewriting this component for about five times. None of them worked as I expected and sometimes they relied on some cheap hacks to get the job done, thing I didn’t like at all. At this moment, the component relies on the tokens provided by the lexer and takes into account a couple of settings to format the code.

The other components of the library got some improvements as well, mostly bug fixes. I really hope that during next week I will get to write some tests and finish the query builder.

To see my progress, you can check out my library repository or some of the pull requests I submitted this week.

Week 9

During the past week I tried to improve the overall quality of the code base which consisted of writing a couple of tests, fixing over 200 of Scrutinizer’s issues and also fixed some old bugs regarding the parser. The library got some updates as well, including more rules to check for errors in queries, support for transactions and improved support for UNIONs.

I wish I wrote more tests during this week, but for the next one I will try to focus more on that and increase the overall code coverage.

To see my progress, you can check out my library repository, some of the pull requests #11319, #1816, #1811, #1807 or the bugs I fixed #4962, #5437, #6118.