Monday, September 27, 2021

SQL Relay 1.9.2 Release Announcement

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

This release has 2 main features:

Improved Ruby API

Some time ago Ruby added a Global Interpreter Lock, similar to the one that Python has had forever. To improve performance with modern Ruby, I added code to release/reacquire the lock around SQL Relay C-API calls in case they perform I/O, similar to what the Python API does.

Password File Support in the Userlist Auth Modules and Connect Strings

If you don't want to store passwords directly in the sqlrelay.conf files any more, it's now possible to store them in external files (with potentially more restrictive permissions) and refer to them in the sqlrelay.conf file enclosed in square brackets.

The userlist, mysql_userlist, and postgresql_userlist auth modules now support this. It is also supported in the "password" parameter of the "string" attribute of the "connection" tag for all databases.

Bug Fixes

The sqlrclient protocol module had some quirks related to how it handled cases where it was out of cursors, but was sent a really long query. These are resolved now. There was also a bug that could cause the result set not to be closed and the "current error" not to be cleared between reexecutions of the same query (eg. with updated bind variables) if the previous execution resulted in an error. That's also fixed. Both fairly obscure errors, but if they sound familiar then try this release.