libdrizzle + SQLite hack

I’ve been wanting to try something with libdrizzle since I added the server protocol interface. After an hour or two of hacking, I came up with:

lap> sqlite3 farm
SQLite version 3.5.9
sqlite> CREATE TABLE animals (
   ...>   name  VARCHAR(255) NOT NULL,
   ...>   sound VARCHAR(255));
sqlite> INSERT INTO animals VALUES ("Cow", "Moo");
sqlite> SELECT * FROM animals;
Cow|Moo
sqlite>

Next, using a new program I hacked together in the libdrizzle examples directory:

./sqlite_server -m -v farm 54321

Now, in another terminal:

lap> mysql -h 127.0.0.1 -u root -P 54321
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: libdrizzle+SQLite

mysql> INSERT INTO animals VALUES ("Sheep", "Baa");
Query OK, 0 rows affected (0.14 sec)

mysql> SELECT * FROM animals;
+-------+-------+
| name  | sound |
+-------+-------+
| Cow   | Moo   |
| Sheep | Baa   |
+-------+-------+
2 rows in set (0.00 sec)

mysql> SELECT @@version_comment;
+------------------------------------+
| version                            |
+------------------------------------+
| SQLite Server using libdrizzle 0.1 |
+------------------------------------+
1 row in set (0.00 sec)

mysql>

There, now you make any SQLite database look like a Drizzle or MySQL server. The sqlite_server program is about 400 lines and only uses libsqlite3 and libdrizzle. For the curious, this is *not* included in the 0.1 release of libdrizzle, you’ll need to grab the latest source from Launchpad (bzr branch lp:libdrizzle). This was done quickly just for demonstration purposes, but if someone actually wants to make a project out of this I’d be happy to assist!

Now, what else can we slap a Drizzle/MySQL server interface on…? :)