DBD::MariaDB Prepared Statements, Async, Test Suite

Summer of Code Project Ideas

DBD::MariaDB Prepared Statements, Async, Test Suite


DBI is a database independent interface for the Perl 5 language. MariaDB is a popular SQL database server. DBD::MariaDB is a DBI driver which allows Perl 5 DBI application to connect to a MariaDB or MySQL server. DBD::MariaDB is a fork of the older DBD::mysql driver that aims to have a full and correct Unicode support, fixed bugs which were not possible to fix in the DBD::mysql due to compatibility reason and also support for a new MariaDB specific features which are not available in the original MySQL software. DBD::MariaDB driver is developed in GoodData and its project page is on GitHub.

Expected outcomes

There are several areas for improving the DBD::MariaDB driver. To call the project successful, at least one of the first two improvements must be completed.

  • Implement a full support for server side prepared statements, including bind parameters, output parameters, multiple result sets and support for the MariaDB specific extension execute direct. Currently DBD::MariaDB uses its own code for a placeholder replacement. Basic support for a server side prepared statements needs to be explicitly enabled.
  • Implement an asynchronous / non-blocking mode of a query execution and server side prepared statements via the new MariaDB asynchronous Non-blocking library API. Currently DBD::MariaDB has a very limited and mostly buggy support for an asynchronous mode which uses undocumented functions provided by the MySQL client library.
  • Extend and fix an existing driver test suite. Currently DBD::MariaDB tests do not cover all DBI application use cases, some tests are missing, other tests are incorrectly written. Proper tests are needed for ensuring the compatibility between the MariaDB server and a DBI client application, i.e. that everything implemented in the DBD::MariaDB driver works as expected. Tests are now automatically running on Travis CI and AppVeyor services for every change in the driver.

Required skills

Experience with C, Perl and SQL languages.



Possible mentors