Monday, April 11, 2011

Drizzle JDBC 1.0

Finally got around to making a 1.0-release of Drizzle JDBC, after a while of not getting any bug reports (not at all claiming that it is bug free, but it is stable enough for several companies to use it in production).

Far those new to Drizzle JDBC, it is a BSD-licensed JDBC driver for Drizzle and MySQL.

Changelog

  • DatabaseMetaData fix - return column_type instead of data_type, contains more information (by Stephane Giron)
  • Detect if a blob is actually a CLOB by checking charset number (by Christian Peter)
  • Connect with UTF-8 charset default (bug reported by Marc Isambart)
  • Support for connection timeouts (by Marc Isambart) - add ?connectTimeout=X to have an X second connection timeout.
  • Properly support TIME and BOOLEAN datatypes in Drizzle
  • Move query timeout thread to the Connection class instead of having it in the statement class (duh) - now one extra thread per Connection instead of one per Statement. Is safe since only one statement can run in one connection at a time.
  • Generally shape up UTF8 handling throughout the driver (by Marc Isambart and me).
  • Update copyright headers, now includes the standard Simplified BSD license header.
  • Add an AUTHORS file

Whats next?

So, the general plan for the future is:
  • Make the driver more modular - it should be possible for users to change the behavior of almost every aspect of the driver
  • Support the optional javax.sql packages - XA handling etc. This will be built as a separate maven-published jar to keep size of the basic driver small
  • Support the SQL escape syntax (never used it, but i guess it should be there...)
  • ...

If any of the things above are more important for anyone, please let me know so that i know where to begin.

5 comments:

Robert Hodges said...

Congratulations, Marcus. Tungsten has been using Drizzle JDBC for months in production. We look forward to helping you make more improvements so that the driver is widely used.

Anders Norgaard said...

Hi Marcus,

Thanks for the driver. I tried switching to Drizzle from mysql, but quickly ran into a problem that doesn't happen with the exact same queries on mysql

org.drizzle.jdbc.internal.common.QueryException: Temporary table too large, rerun with SQL_BIG_RESULT.
at org.drizzle.jdbc.internal.mysql.MySQLProtocol.executeQuery(MySQLProtocol.java:401)
at org.drizzle.jdbc.DrizzlePreparedStatement.executeQuery(DrizzlePreparedStatement.java:87)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96)
at grails.orm.HibernateCriteriaBuilder.invokeMethod(HibernateCriteriaBuilder.java:1156)

do you know if it is a problem with the driver or with the (default ubuntu) configuration of drizzle?

Best
Anders

Marcus Eriksson said...

Hi Robert

Thanks, you guys at Continuent have really helped getting the driver somewhat stable and feature complete, if there is anything you want to see in the driver, just let me know

Marcus Eriksson said...

Hi Anders

That looks like a setting in Drizzle

You could try increasing the variable tmp_table_size like this:

set tmp_table_size=64000000 (or find what suits your system).

Marcus Eriksson said...

Anders, btw, you could read this bit on how to configure drizzle:

http://docs.drizzle.org/configuration.html

you should be able to add tmp_table_size=xyz in a drizzled.cnf or something file.