MiniDBI - a simple database interface for Rakudo Perl 6
The MiniDBI project provides a simple database interface for Perl 6.
It's not a port of the Perl 5 DBI and does not intend to become one. It is, however, a simple and useful database interface for Perl 6 that works now. It looks like a DBI, and it talks like a DBI (although it only offers a subset of the functionality).
Until there is a benefit in doing it otherwise, the MiniDBD drivers stay and install together with the main MiniDBI.pm6 in a single project. The first DBD is for MySQL, there will probably soon be SQLite, Postgres and FreeTDS. An AnyData driver for memory or file formats such as YAML or XML is also planned.
The initial test script is merely a concatenation of all the scripts in the Perl 5 DBD::mysql test suite, translated to Perl 6. It's not efficient but indispensable to assess coverage of the existing DBI feature set. Only about 15% of the suite has been converted so far, with 86 tests passing, 0 todo and 0 skipped.
The test suite will change to eliminate the current slowness and redundancy. It will contain general tests as well as tests for particular databases. The aim is to make the suite demonstrate portable and non portable operations.
Add some DBDs. Improve the test suite. Attract more contributors.
We'll add a driver for the DBDI project (http://github.com/timbunce/DBDI) once it has sufficient functionality. Then the existing drivers would be migrated to become DBDI drivers. Once DBDI and driver functionality has reached a suitable level a full port of DBI can be built over DBDI.
The MySQL driver performs CRUD operations. Testing with production data is urgently needed. Testers, please volunteer!
Numbers with decimal points are passed to the database server as quoted strings, because of far-too-simple checking in execute().
The Perl 6 Pod in the doc:MiniDBI module. The Perl 5 doc:DBI and doc:DBI::DBD.
This README and the documention of the MiniDBI and the MiniDBD modules are in the proposed Pod6 format. The reasons are that Perl 6 does not allow any other kind of Pod, and that Pod6 needs more examples. View it with an appropriate formatter if your system has one.
LICENSE and COPYRIGHT
Use these files at your risk and without warranty. Give due credit if you do.
Written by Martin Berends.