Drizzle build 1742 tarball has been released

August 31st, 2010 12:03 pm (Pacific) by Patrick Crews

Drizzle source tarball based on build 1742 has been released.

In this release:

  • *Continued work on logging statistics - added a table to the scoreboard that gives memory usage and size
  • print stack trace and stack dump have been removed. As we use gcc for a majority of our builds, we are now using the built-in backtrace ability. Added crash and shutdown functions for use in testing. See blueprint for more details
  • FOREIGN KEY info is now put into the table proto on CREATE TABLE, no longer just passed to the engine
  • SHOW CREATE TABLE now uses the table proto
  • Packages available for Debian and Ubuntu
  • Removed static instances from plugins
  • Continued code cleanup
  • Various bug fixes

The Drizzle download file can be found here

Welcome Andrew Hutchings to the Rackspace Drizzle team

August 30th, 2010 10:13 am (Pacific) by Lee Bieber

Please join me in welcoming Andrew Hutchings to the Rackspace Drizzle team. Andrew has been a very active community contributor to the Drizzle project so we are very excited to have him on board now working on Drizzle. Well ok, his first official day is tomorrow but he has been very busy with contributions over the past number of weeks!

Andrew lives in a small town in Northamptonshire, England with his wife and two sons. Known as LinuxJedi to many online, he is a community code contributor to several open source projects. He was previously a Senior MySQL Support Engineer for Sun/Oracle specialising in MySQL Cluster. He is also the co-author of a book on the MySQL Plugin API. You may have already seen his blog on Planet Drizzle.

Welcome to the team Andrew!

Drizzle build 1717 tarball has been released

August 17th, 2010 03:22 pm (Pacific) by Patrick Crews
Drizzle source tarball based on build 1717 has been released.


NOTE:  New dependency introduced!
We now require libboost-thread-dev to build.
Our ppa has been updated to reflect the change.


We apologize for any inconvenience, but this gives us the following benefits:
  • boost threads have scope safety
  • boost threads are completely portable (no more worrying about that stuff)
  • They will allow us to see what is happening with threads through the Performance Schema
  • They will allow us to eventually get rid of per-session memory, which will allow us to do more with asynchronous scheduling inside the server.


In this release:
  • continued work on embedded_innodb / HailDB
  • continued work on logging statistics
  • continued work on updating the options system
  • continued work on the filesystem storage engine
  • code cleanup
  • various bug fixes

The Drizzle download file can be found here

Drizzle build 1683 tarball has been released

August 3rd, 2010 04:07 pm (Pacific) by Patrick Crews

Drizzled source tarball based on build 1683 has been released. In this release:

  • Fixes for several bugs in transaction log
  • ANSI INFORMATION_SCHEMA now populates itself
  • Continued code cleanup
  • Various bug fixes
  • Filesystem plugin merged in
  • Merged in intltool

The Drizzle download file can be found here

HailDB version 2.0.0 has been released

August 2nd, 2010 04:49 pm (Pacific) by Patrick Crews

HailDB source tarball, version 2.0.0 has been released.
In this version:
- A lot of compiler warnings have been fixed.
- The build system is now pandora-build.
- some small bugs have been fixed
- Header file is now haildb.h instead of innodb.h
- We display "HailDB" instead of "Embedded InnoDB"
- Library name is libhaildb instead of libinnodb
- It is probably binary compatible with the last Embedded InnoDB release, but we don't have explicit tests for that, so YMMV

The HailDB download file can be found [https://launchpad.net/haildb/+milestone/release-2.0 here]

Welcome David Shrewsbury to the Rackspace Drizzle team

August 2nd, 2010 07:39 am (Pacific) by Lee Bieber

We are very happy to announce that David Shrewsbury is joining the Rackspace Drizzle team today. David has been a steady community contributor to the Drizzle project so we are very excited to have him on board full time working on Drizzle.

David has a M.S. in Computer Science from Appalachian State University and currently lives in Durham, North Carolina. In his previous lives, David has been a developer, database architect, and even worked as a MySQL Support Engineer focusing on Cluster support.

When not trying to wrap his head around some obscure piece of code, David can often be found either on the golf course, reading books from the dustier corners of the library, or sampling the latest microbrew.

Welcome to the team David!

Drizzle build 1666 tarball has been released

July 20th, 2010 10:19 am (Pacific) by Patrick Crews

Drizzled source tarball based on build 1666 has been released. In this release:

* Continued PBMS work
* Fixes of some crashing optimizer bugs
* We now rely on YES/NO vs. TRUE/FALSE in INFORMATION_SCHEMA / DATA_DICTIONARY per the SQL standard
* Continued work on logging_stats

The Drizzle download file can be found here

Testing Drizzle's transaction log

July 9th, 2010 02:12 pm (Pacific) by Patrick Crews
One of my first tasks on the Drizzle team was to check out the transaction log, part of Jay Pipes' work on replication.  We needed to make sure that the log itself was rock-solid and that any code written to use it would have a worthy foundation.  As it turns out, some people are really interested in getting replication working ; )



As can be seen from the blueprint, testing will involve two of our main testing tools, the randgen and our standard test suite (test-run, dtr, etc).  So far, our efforts have been concentrated on writing tests for the test suite.  These tests have largely consisted of executing queries that should make it into the transaction log, then using the UDF print_transaction_message($log_file,$log_offset) to examine the log's contents.  The tests can be found here and executed with ./test-run --suite=transaction_log.  (NOTE:  The tests themselves are largely complete, but our expected results are not yet finalized / correct due to the bugs noted below).  I'd like to extend a special thanks to Joe Daly for his help in writing these tests and finding some bugs in the log.



While we have tested all of the available data types and basic transactions and they are looking quite solid, our efforts have still turned up some interesting bugs:
(this list is maintained at the launchpad blueprint noted above)


  • Bug #594873: transaction log incorrectly records NULL INSERT into an ENUM as the first permissible value
  • Bug #594876: transaction log not differentiating NULL values and empty string for char columns
  • Bug #596972: transaction log logging 0 for NULL INTEGER VALUES
  • Bug #599582: Transaction log does not appear to be collecting all information for multi-row REPLACE statements
  • Bug #597910: Transaction log does not appear to be capturing FOREIGN KEY information
  • Bug #599851: Transaction log not capturing CASCADE'd UPDATE data on a table using a foreign key
  • Bug #599952: transaction log attributing statements to wrong tables on multi-table, multi-statement transactions
  • Bug #600032: rollback to savepoint not handled correctly in transaction log
  • Bug #600795: LOAD DATA INFILE INSERTs not registered by the transaction log



The first 3 bugs relate to how the log captures NULL values for various data types and have been traced to a single root cause.  The remaining 6 seem more interesting and serious for replication functionality.  To summarize, the transaction log appears to have trouble with trickier (more complex) transactions.  These include changes propagated via a foreign key, multi-row REPLACE, and multi-table transactions.



Once these bugs have been addressed, we will continue with test development for the randgen.  This will include stress testing the server / log with DDL-generating grammars and validation of the data stored within the log.  Initial experiments with high-volume (10+ threads at 250k queries each) have looked promising (no crashes, locks, major slow downs over time).  In the meantime, we'll be busy with other tasks (dump+restore)



As always, we welcome any feedback, questions, or bug fixes : )
More information on Drizzle testing can be found here.

Drizzle build 1644 tarball has been released

July 6th, 2010 05:27 pm (Pacific) by Patrick Crews

Drizzle source tarball based on build 1644 has been released. In this release:

The Drizzle download file can be found here

Testing BlitzDB with the randgen.

June 28th, 2010 11:05 am (Pacific) by Patrick Crews
Thanks to the hard work of Toru Maesaka, BlitzDB is now in Drizzle's trunk.  As a result, we are now testing BlitzDB in our automated tests.

One of the easiest and most powerful ways of beating up on BlitzDB is via the randgen (RQG).  The RQG's data generation facility (gendata) is quite flexible and extensible and adding BlitzDB to the mix was very easy.  Beyond adding 'BlitzDB' to the engines section of the altered gendata files and adjusting / removing some data types to accommodate BlitzDB limitations, all that is required is for us to modify the grammars to accomodate any changes to the test tables.

This new setup provides us with a test bed of both Innodb and BlitzDB tables and queries that will mix the different tables.  Of course, we still keep the original tests to provide even more testing for Innodb only.

We now have 4 tests that utilize BlitzDB in our automated testing:
  • optimizer_subquery_mix_engine
  • optimizer_subquery_mix_engine_rand
  • outer_join_mix_engine
  • outer_join_mix_engine_rand

The grammars and gendata files have been pushed to lp:randgen and the tests are part of drizzle-automation's randgen testing.

These tests are based on two of the most productive RQG grammars we have.  The 'mix' suffix means that we are mixing different storage engines across queries (we will likely add additional storage engines over time - looking at you, PBXT).  

The 'rand' tests make use of the RQG's '--seed' option for increased randomness.  For a given seed value, the queries and generated data will be consistent on any machine.  By using seed=time in certain tests, we guarantee that we are constantly trying new data and query combinations in addition to our standard tests.

Additional information regarding Drizzle testing (including the randgen) can be found here.  Please feel free to make use of the mailing lists if you want to get involved, have questions, etc - there's plenty of work for anyone who is interested : )