Monday, July 27, 2026

SQL Relay 2.2.0 Release Announcement

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

This release adds a native JDBC driver, technically making SQL Relay the obscure Type 3 JDBC driver.

It also add support for configurable transaction models. You can make Oracle act like PostgreSQL, PostgreSQL act like MySQL, any of them act like MSSQL, etc. Just set transactionmodel to one of:

  • "none" - no transactions
  • "native" - the database's native transaction model
  • "implicit" - oracle-style
  • "explicit" - postgresql-style
  • "explicit-deferred" - mysql-style
  • "explicit-error" - sap/mssql-style

This is an upgrade to the old parameter faketransactionblocks which basically toggled between native and explicit.

The ODBC driver has been wrung out and improved in this release too.

Finally, there is a new savepoints trigger that wraps each query in a savepoint, and rolls back to that savepoint if the query fails. This is especially helpful when migrating an app to PostgreSQL, as PostgreSQL otherwise aborts a transaction if a query fails.

As usual, there are also plenty of improvements and bug fixes.

Rudiments 2.2.0 Release Announcement

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

This release features some new encryption classes, updates to some old ones, and various obscure fixes.

Tuesday, May 13, 2025

SQL Relay 2.1.1 Release Announcement

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

This patch release adds --sysconfdir to sqlrelay-config, fixes a bug which caused the port="..." attribute of the instance tag to be ignored, and loads the Oracle libclntsh library into its own linker namespace (if the platform supports it) to work around conflicts between its internal versions of other libraries (eg. openldap) and system libraries.

Rudiments 2.1.0 Release Announcement

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

This release features some refactoring of the mvc classes and other things that are used when building MVC apps, some improvements to the logger classes, support for linker namespaces on platforms that support dlmopen(), and some fixes for older platforms.

Wednesday, January 1, 2025

SQL Relay 2.1.0 Release Announcement

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

This release adds much improved debug logging. The debug logger module now supports options for logging to standard output and standard error. Most tags in the sqlrelay.conf file now support a debug="yes/no" attribute which can be used to enable or disable debug for that specific module or subsystem. Debug to standard output for a particular module or subsystem can be enabled by just adding a debug="yes" to the appropriate tag, without specifically configuring a debug logger, now. However, if a debug logger is configured, then debug will be sent to it, and logged to either standard output, standard error, or files, as specified by its configuration. The debug itself is now more sane and readable as well. See the SQL Relay Configuration Guide for more detail.

Rudiments 2.0.2 Release Announcement

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

This patch release just moves things around internally such that syslog-related macros are exposed when including logger.h.

Wednesday, December 4, 2024

SQL Relay 2.0.1 Release Announcement

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

The SQL Relay native APIs, database abstraction layers, and clients now supports attempts to connect to multiple hosts and host randomization, providing another option for front-end load balancing and failover. If the host/server is a comma-separated list of hosts, then the list of hosts will be randomized, and an attempt will be made to connect to each until the attempt succeeds. See the Front-End Load Balancing - Host Randomization section of the Configuration Guide for more details.