I've just created a release of Libdrizzle
5.1.4 (the BSD licensed C connector for MySQL servers) which for
me is one of the most exciting releases to date.
Why?
Not because the amount of features or anything that we have
added, in fact this is mostly a minor release with bug
fixes. It is because Brian Aker and I didn't submit the most code for
it. That honour goes to Wim Lewis from The Omni Group who
has done a fantastic job fixing up Libdrizzle.
As for the release itself the main fixes revolve around cleaning
up code and many fixes to the server-side prepared statement
handling. Behind the scenes Wim has supplied many
improvements to the test suite and Brian has setup more platforms
to test against in Jenkins. …
Today marks the first release of Drizzle Tools for MySQL
servers. Drizzle Tools aims to be a collection of useful
utilities to use with MySQL servers based around the work on the
Libdrizzle Redux project.
In this first version there is one utility in the tree called
'drizzle-binlogs'. If you've seen me talk about this tool
before it is because it used to be included in the Libdrizzle 5.1
source but has now been moved here to be developed
independently. For those who haven't 'drizzle-binlogs' is a
tool which connects to a MySQL server as a slave, retrieves the
binary log files and stores them locally. This could be
used as part of a backup solution or a rapid way to help create a
new MySQL master server.
Due to the API changes before the Libdrizzle API became stable
Drizzle Tools requires a minimum of Libdrizzle 5.1.3 to be …
Now that we have frozen the 5.1 API of Libdrizzle I can blog
about how to use parts of the API.
In this blog post I will cover connecting to a MySQL server and
retrieving the binary logs.
First of all we need to connect to the MySQL server
#include <libdrizzle-5.1/libdrizzle.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <inttypes.h>
int main(void)
{
drizzle_st *con;
drizzle_binlog_st *binlog;
drizzle_return_t ret;
con= drizzle_create("localhost", 3306, "user", "pass", "",
NULL);
ret= drizzle_connect(con);
if (ret != DRIZZLE_RETURN_OK)
{
printf("Could not connect to server: %s\n",
drizzle_error(con));
return EXIT_FAILURE;
} …
A couple of days ago we released Libdrizzle 5.1.3. With
this release of the C connector for MySQL servers we are freezing
the 5.1 API and declaring it stable. This is also one of
our biggest releases after incorporating code from a Seattle
developer day. The diff since 5.1.2 is over 6000 lines long
and around 180KBytes, incorporating many bug fixes and
improvements.
The most notable changes in this release are:
- the drizzle_binlogs tool has been removed, it is now in the Drizzle Tools tree which will have its first release soon.
- the connection API has been refactored, options processing has been re-written and the connection API has been simplified in general
- drizzle_escape_string has been made safer
- drizzle_hex_string and drizzle_mysql_password_hash has been removed
- internal …
This weekend I am supposed to be giving a talk at FOSDEM on
Libdrizzle. Unfortunately my kids and I all
fell ill on Thursday (my wife appears to be immune) so I had to
cancel my plans (infecting 5000 people didn't seem wise :)
Instead I am writing this blog post about Libdrizzle and my part
in it which covers some of what I was going to talk about.
History of LibdrizzleLibdrizzle started out as a from-scratch C
connector for Drizzle and MySQL originally created by Eric
Day. It was designed to be high performance and use common
standards to make it easy to work on. In the summer of 2010
it was merged into the main Drizzle tree where development has
been focused. There were several attempts to split it out
again but until now none were truly successful.
For a few years Brian …
As part of the Libdrizzle Redux project I created an example tool
which was bundled with it which will connect to a MySQL server as
a slave and download the binary logs to local files. This
was developed as a quick example of what can be done with the new
binlog API.
Two things quickly became apparent:
- We shouldn't really be distributing applications in a library
- I am going to be developing more useful tools around libdrizzle and they certainly shouldn't be in the same package
- BSD is a fantastic license for a library, but I personally prefer GPLv2 for applications
With this in mind I have pulled the drizzle_binlogs utility from
Libdrizzle trunk (and therefore won't be in the 5.1.3 release)
and put it in its own repository. It has been licensed
appropriately (GPLv2) and I am already beginning to develop more
tools to go with it.
The are no source …
Libdrizzle is getting better and better with every release, and
to reflect this we have two announcements to make.
First of all, Libdrizzle 5.1.2 has been released. This
release has several major bug fixes and performance
enhancements. Changes are as follows:
- Non-blocking Windows connections are now more stable
- Improvements to Windows building
- Unix Socket connections are now more stable
- Memory allocation/freeing cleanups (for performance and ease of code)
- Network packet buffer now much more flexible
- Many performance improvements (the bundled drizzle_binlogs tool is now around 10x faster on my i7 laptop)
- Several other minor bug fixes
API chages:
- drizzle_query_str() has been removed, drizzle_query() with a 0 byte length parameter now does the same thing.
As always you can …
[Read more]
A new version of the BSD licensed, MySQL compatible C client
library, called Libdrizzle (5.1.1 codename Carbrooke) has been
released today.
Since the last release (less than 2 weeks ago) the diff is 7725
lines long, 224KB in size. So we have been really busy
:)
There have been a few API changes in this version, especially
around the prepared statement API. We have made this API
much simpler to use. So applications will very likely need
slight modifications and recompiling.
Major changes in this version:
- Windows support (using MinGW) - Big thanks to Brian Aker, he worked very hard on this
- More cleanups and improvements to the general API
- Faster, more stable non-blocking connection handling - Something else Brian has been working hard on
- Almost the entire prepared statement user …
Brian Aker and
I have been working hard in the last few weeks to give you a
great Christmas present, Libdrizzle 5.1.0. The MySQL
compatible, BSD licensed C connector (so static compiling with
commercial software gets the thumbs up!).
The latest changes include:
- A server-side prepared statement API
- Improved binary log API
- An example binary log remote retrieval utility using the binlog API called "drizzle_binlogs"
- A new build system, DDM4 which is used by Gearman and Memcached
- Many bugs fixes
The source and manuals can be found on the Launchpad downloads page. Please enjoy, feel free to file bugs, questions and hack on code on our Launchpad …
[Read more]
Over the past few months I have been spending my spare time on a
new project. A new version of libdrizzle which is much
simpler to use and with many new features. Today the first
version of this MySQL compatible client is released, called
Libdrizzle Redux.
Why 5.0? Because Libdrizzle 1.0 and 2.0 have already been
released, in packaging versions 3.0 and 4.0 used as API
revisions. So 5.0 is the fresh start.
Main FeaturesThese are the main features of the library:
- A BSD licensed MySQL compatible C connector, so you can statically link it with commercial software
- A simplified API compared to Libdrizzle. No more confusion over whether the client or library should be allocating/freeing. There isn't a big difference to the MySQL C API for most things.
- New documentation, PDF for now web based coming soon.
- A new binlog …