Monday, August 5, 2013

SQL Relay - 0.51 is out

Not a whole lot of new stuff in this release, mainly updates to support newer versions of operating systems, databases and compilers. Applied some patches. Some of the database install docs were updated. An obscure date conversion bug was fixed and documented.

Changelog:

  • fixed minor perl DBI driver documentation issue
  • added support for oracle 12c
  • added support for db2 10.1 and 10.5
  • updated docs for oracle 12c, db2 10.1 and 10.5 and sybase 15.7
  • modernized database installation docs a little
  • fixed db2/sybase detection to take the system architecture into account when searching for libs
  • applied various build-related patches from Ville Silventoinen
  • fixed rpm->rpmbuild in installation docs
  • added ora-00020 to list of errors that will cause the oracle connection to attempt to re-login, per Ville Silventoinen
  • fixed some MS SQL Server/dateddmm parameter issues and updated docs to explain the remaining issues

Rudiments - 0.42 is out

Not much new at all in this release, just some fixes for some compiler issues and a documentation fix. Really minor stuff.

Changelog:

  • made a "char" array in the charstring class explicitly "signed char" for arm and similar platforms where "char" is actually "unsigned char"
  • fixed variadic macros in codetree class for MSVC
  • fixed rpm->rpmbuild in installation docs

Friday, February 22, 2013

Rudiments - 0.41 is out

Rudiments version 0.41 is now available.

This release adds support for Syllable OS and includes a few other minor bug fixes and improvements.

SQL Relay - 0.50 is out

SQL Relay version 0.50 is now available.

This release mainly fixes a few issues relevant to users of Microsoft SQL Server.

The following client C++ API methods, equivalent methods and functions in other API's and equivalent commands in sqlrsh now work properly with SQL Server via FreeTDS:

  • getDbVersion()
  • getDatabaseList()
  • getTableList()
  • getColumnList()

The FreeTDS code has been updated as well. FreeTDS (and the TDS protocol in general) doesn't support fetching multiple result sets simultaneously through the same connection. Any attempt to do so results in the error: "Attempt to initiate a new Adaptive Server operation with results pending." SQL Relay has always attempted to work around this by caching the entire result set on the client by default but there was a subtle bug that could cause the error to still occur under certain circumstances. That bug has been fixed and everything now works as expected. I added an entry to the FAQ about it as well.

Parameters have been added to sqlrelay.conf for reformatting dates in the result set as well. Many databases provide limited or no control over the formatting of dates and times in the result set. This is problematic when migrating from one database to another if the databases have different date/time formats and the application expects a particular format. To help remedy this the datetimeformat, dateformat, timeformat and dateddmm parameters have been added to allow dates in the result set to be reformatted by SQL Relay before they are sent to the client.

Various other bug fixes and updates have also been made:

  • fixed the sqlrserver-config script to return data for libsqlrserver rather than libsqlrconnection
  • added a test for SQLROWSETSIZE for odbc that doesn't define it
  • fixed a NULL dereference in custom_nw logger
  • fixed an uninitialized variable (sqltr) in sqlrcontroller class
  • fixed a memory leak in the freetds version-checking code
  • added new search paths and default prefix for Syllable OS
  • added support for null-terminated result bind lists to the mysql drop-in library so apps can optionally bind fewer columns than come back in the result set
  • added configure tests for php-config-"version"

Monday, January 28, 2013

SQL Relay - 0.49.1 is out

This release fixes two bugs:

  • sqlrserver-config returns the proper library now
  • there was a NULL-dereference in the custom_nw logger module

If you don't use either of those things then there's no need to upgrade.

Monday, December 31, 2012

SQL Relay - 0.49 is out

SQL Relay 0.49 is now available.

This release features the addition of extension modules for password encryption and logging. Logging was actually added in the previous release but it has been expanded and documented in this release.

See Password Encryption Modules and Logger Modules for more information.

The build process has been improved as well.

Lots of code was reorganized to be easier to maintain and to compile faster. For many years the configure script would erroneously include "-pthread" in the compile commands on platforms that don't support it. That has been fixed.

-Werror has been added to default build for most components as well and various issues revealed by it have been fixed.

The windows make.bat script has been refactored too and now supports both regular and CLR builds.

The client-server protocol has been refactored to improve performance. Two client-server round trips have been removed. One after authentication and another after the listener-connection handoff. All client-server commands can run in a single round trip now.

The handoff="reconnect" parameter has been replaced with handoff="proxy". In the past, if handoff="reconnect" then the client was told to disconnect from the listener and reconnect to an available connection daemon. Now, if handoff="pass" is unsupported, the listener just proxies the client, ferrying data back and forth between it and the server. This causes the listener/connection relationship to be completely transparent to the client and removes a client-server round-trip.

An very primitive ODBC driver has long been included in the source tree. It has been improved significantly in this release and can now be used with the isql program included with unixODBC and iODBC and with the henplus JDBC client using the JDBC-ODBC bridge. The driver still lacks many features, hasn't been tested much beyond those clients, and doesn't work on Windows without manually adding registry entries, but it is usable and should eventually make it possible to use SQL Relay with a much wider range of applications.

A few bugs were fixed as well including a bug that could cause problems when fetching from an output bind cursor under a very specific set of circumstances and a bug that could cause a hang if the database login failed.

Client API methods for getting the database's host name and IP address have been added as well.

This version of SQL Relay requires Rudiments - 0.40. Both are available from the SQL Relay web site.

Rudiments - 0.40 is out

Rudiments 0.40 is now available.

This release fixes several obscure bugs and problems with the build process.

For many years the configure script would erroneously include "-pthread" in the compile commands on platforms that don't support it. That has been fixed.

-Werror has been added to default build as well and various issues revealed by it have been fixed.

The windows make.bat script has been refactored too and now supports both regular and CLR builds.

The following bugs have been fixed:

  • fixed hostentry::getAddressString() for numbers greater than 127
  • fixed bugs that could lead to a crash when using the hostentry class with NULL hostnames
  • fixed charstring::safeCopy to copy the NULL terminator
  • made charstring::copy NULL-safe
  • made crypt class salt NULL-safe
  • reads that error out with EAGAIN are treated as successful reads of 0 bytes now

It appears that some platforms (OpenBSD 4.9 for i386 at least) create sockets in non-blocking mode. This is not what a developer would generally expect, so some changes have been made to standardize this behavior.

  • all sockets are manually set to blocking mode after creation now
  • sockets created by accept() are set to the blocking/non-blocking mode of the socket that was accepted on