Tuesday, September 11, 2018

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

Version 1.1.0 of Rudiments, the C++ class library for developing systems and applications, is now available.

This release features some fairly significant restructuring of the SAX and DOM related classes. In particular, xmlsax has been genericized into sax, xmldomn has been genericized ingo dom, and xmldomnode has been genericized into domnode. The xmlsax/xmldom classes have been reworked to inherit from sax/dom. The jsonsax/jsondom classes have been added to manipulate JSON objects. The csvsax/csvdom classes have been added to manipulate CSV files. And, finally, the xmldomevents class has been renamed to just domevents, as it can be used with any class that inherits from dom.

The bytebuffer class has also been overhauled and is now implemented similarly to std::basic_string, with similar performance characteristics.