Tuesday, September 11, 2018

SQL Relay 1.4.0 Release Announcement

Version 1.4.0 of SQL Relay, the powerful connection pool, load balancer, query router, and database proxy, is now available.

Like the last release, this release is mainly focused on integrating recent improvements and customizations, contributed by or developed for various clients into the official distribution.

Notable Changes and Improvements

dbase="mariadb" is now supported. You don't have to use dbase="mysql" when running SQL Relay against mariadb any more.

sqlr-import can import CSV files now.

sqlr-export correctly escapes double-quotes now.

Query translations are applied to the select-database query now.

The MySQL/MariaDB connect string supports an api=stmt/classic option now that selects which MySQL API to use. When api=classic, the mysql_*() functions are used and binds are faked. When api=stmt, the mysql_stmt_*() functions are used and binds are supported natively. It turns out that the classic API is faster, even with modern MySQL, so if you don't specifically need the functionality of the stmt API, then api=classic might work better for you. When using the MySQL Front-End Modules, you can even point an app that uses the stmt API at SQL Relay which is configured to use api=classic, and vice-versa.

The ODBC connect string supports a unicode=yes/no option that makes it possible to disable unicode with drivers that don't support it, such as the Cloudera Impala ODBC driver.

There are a lot of other changes too, but everything else is subtle or behind-the-scenes.

Full ChangeLog follows:

  • odbc connection module - trace=yes/no/default now instead of just yes/no
  • pushed detachbeforelogin parameter up to sqlrserverconnection class
  • updated to use rudiments container clearAndDelete...() methods
  • fixed nonsensical uint32_t majorversion>=0 comparison in freetds conn
  • fixed nonsensical uint16_t isnull==-1 comparison in odbc conn
  • fixed return NULL in method that returns false in router conn
  • added manual removal of build directory in nodejs clean target
  • updated nodejs clean target with - in front of node-gyp clean
  • fleshed out the installing-sqlrelay-from-packages doc
  • connect string "timeout" -> "connecttimeout" in docs
  • dbase="mariadb" works now
  • docs have been updated to acknowledge mariadb
  • added configure test to disable ODBC on platforms without SQLULEN
  • updated mysql_config test to add -L/usr/local/lib if it fails, to deal with libiconv, which is located there, on newer freebsd
  • updated mysql drop-in test not to test def_length if def is NULL
  • added NODEGYPPYTHON flag that can be set manually on netbsd
  • fixed gcj/gcj3/kaffe detection on older systems
  • fixed some buggy static module declarations/assignments
  • sqlr-import can import csv files now
  • sqlr-export correctly escapes double-quotes now
  • query translations apply to the select-database query now
  • added api=stmt/classic option to mysql connection module
  • added a per-cursor bindpool
  • added unicode=yes/no opiton to odbc connection module
  • fixed a bug that could cause stale column metadata to a protocol module between prepare and execute when binds are being faked
  • added stalecursors logger
  • added send()/recv() passthrough operations
  • made various bind-related buffers per-cursor
  • added pattern option to query notification event