[ANN] ngx_drizzle v0.1.0 released: now runs with mysql 5.5+ w/o patching libdrizzle

agentzh agentzh at gmail.com
Tue Jul 5 14:12:23 MSD 2011

Hi, folks!

I'm happy to announce the ngx_drizzle module's v0.1.0 release, which
includes lots of bug fixes and new features accumulated in the last 8


The most exciting thing about this release is that we can now work
with the latest libdrizzle 1.0 without patches on at least Linux and
Mac OS X. And we can now connect to MySQL 5.5+ and we're now more
stable under load.

This is an nginx upstream module integrating libdrizzle
(https://launchpad.net/drizzle ) into nginx in an  non-blocking and
streamming way.

Essentially it provides a very efficient and flexible way for nginx
internals to access mysql, drizzle, as well as other RDBMS's that
support the drizzle protocol or mysql protocol. Also it can serve as a
direct REST interface to those RDBMS backends. Alternatively it can be
invoked by other modules like ngx_lua via subrequests.

It also has a builtin per-worker connection pool mechanism.

Check out its project page for the full documentation:


This module is included in the ngx_openresty bundle: http://openresty.org

Here goes the complete change log for this release:

* now we require at least libdrizzle 1.0, which supports official
mysql 5.5+ and is much more stable under load. thanks Taylor Weibley
for pushing this. We no longer require patching libdrizzle any more.

* fixed a compilation issue on Mac OS X: we should include drizzle.h
prior to nginx headers, or we will not get the "bool" type properly
installed on Mac OS X.

* fixed the spots that trigger -Wunused-but-set-variable by gcc 4.6.

* fixed the duplicate last chunk issue: we should not set the last_buf
flag ourselves in drizzle_output.c because ngx_http_upstream already
sends a last buf for us.

* ported over Maxim Dounin's patch for ngx_http_upstream_keepalive
connection pool fixes: we should have discarded stale read events for
cached tcp connections in the pool.

* implemented the new drizzle_status directive to provide connection
pool status monitoring capability.

* fixed a minor bug in the connection pool: we should resume the
"name", "sockaddr", and "socklen" fields for the connection from the
pool such that we can get more detailed error log messages with the
"upstream: drizzle://ip.add.re.ss:port" bit.

* implemented the $drizzle_thread_id variable which is automatically
set when mysql/drizzle times out.

* now we use the 2-clause bsd license.

* report an error message when upstream name not found for drizzle_pass.

* now we implemented the charset option for the "drizzle_server"
diredctive which causes ngx_drizzle send "set names xxx" automatcially
for every connection to that drizzle server.

* added a lot of more documentation.


More information about the nginx mailing list