SQL Relay 1.8.0
This release mainly lays the groundwork for some future features, including a generic import/export framework. Some notable progress was also made on the JDBC driver, though it's still not finished. The most significant (finshed) new feature is an aes128 password encryption module.
There are some bugfixes as well. A long-standing issue with postgresql that could cause results from multiple open cursors to get confused has been resolved. A subtle error that could cause counting of bind variables on the client-side to hang has been fixed. A long-standing, but apparently obscure, issue that could cause tables from other MySQL schemas to be included in a "show tables" command has been fixed. As well as various other issues.
Full ChangeLog follows:
unattended tests
added sqlrresultsetdomnode class to c++ client API
fixed datedelimiters parameter
added support for SQLParamOptions with SQLUINTEGER arguments
sqlr-import detects uppercase .CSV suffix now
fixed a csv number-detection but in sqlr-import
fixed a delete[] of a const in sqlr-import
it's possible to specify a commitcount of 0 with sqlr-import now
moved sqlrimportxml/csv classes into libsqlrclient
moved sqlrexportxml/csv classes into libsqlrclient
csv import/export is consistent now
added some event methods to sqlrexport
migrated parsedatetime functions to rudiments datetime class
different postgresql cursors use different stmtNames now
sqlrimportcsv can create a primary key that's not in the CSV now
sqlrexportcsv quotes 12+ digit numbers now
fixed subtle, count-related issues when validating bind variables on the client side, that could cause a hang
added an aes128 pwdenc module
applied a patch to fix a crash in the debug logger (missing "%s")
added a tweak to getsitearchdir.rb to fix incorrect lib/lib64 reporting on some centos x64 systems
fixed mysql getColumnList to distinquish proper db/schema
SQL Relay 1.7.0
This release adds 2 significant features: support for the PostgreSQL client-server protocol, and a "replay" module to help automatically recover from deadlocks and lock-timeouts, but also has the usual assortment of minor bugfixes and internal changes.
Full ChangeLog follows:
added postgresql protocol module
updated postgresql connection module to get column info pre-execute
fixed postgresql connection module type oid bug
added tag filter/moduledata
added moduledata(s)::closeResultSet()/endTransaction()/endSession()
mysql protocol returns empty lobs correctly now (not as nulls)
configure replaces -lfbclient with -lgds on freebsd/firebird-2.0.3
fixed a bug that could cause sqlr-stop to try to kill pid 0
fixed unixodbc detection on solaris 11.4
added configure test for PQdescribePrepared
test improvements
documentation improvements
split sqlrelay-crash directive into its own module
deprecated drop-in replacement libraries in favor of protocol support
fixed various mysql 4.x bugs
sqlr-status creates statistics on heap now instead of stack, to work on platforms with a small default ulimit stack
mysql stored procedure test is bypassed for older mysql
tls test is bypassed for older openssl
added NULL handoff socket workaround
improved shutdown/crash handlers for sqlr-listener/connection
fixed hang when more-than-one address was specified in the instance:addresses attribute
*_null used instead of *_unset on PHP 7.4
SQL Relay 1.6.0
This release mainly addresses some recently discovered regressions, but also adds some internal features that required the minor version to be bumped.
ChangeLog follows:
added begin, commit, rollback events
fixed array_init() calls for php-7.3
integrated my_bool fix for mysql 8.0.1+
mysql sslmode=require/prefer + bad sslca/sslcapath generates warning rather than error now (like the mysql cli)
refactored various routines that parse bind variables out of queries
added bindvariabledelimiters config option to define supported bind variable delimiters
added fakeinputbindvariablesunicodestrings config option
added bind variable delimiters config methods to c++ api
replay trigger can now run a query (eg. "show engine innodb status") and log the reslits to a file when a replay condition occurs
replay trigger doesn't log/replay selects by defalit now (but this is configurable)
updated normalize translation to support queries containing binary data
fixed a backslash-escape bug in the normalize translation
refactored some sqlrclient api private methods
refactored various bind-manipliation/detection methods
sqlr-listener creates tmpdir now on start, if it doesn't exist (because this is often in /run, which is often a tmpfs)
postgresql connection modlie forces re-fetch of column data after execute now
everything uses charstring::isYes/isNo now, instead of direct comparisons against "yes" or "no"
fixed subtle sqlexecdirect bug
fixed subtle sqlserver max-varchar bind length bug
fixed various subtle sqlserver bugs where column-info isn't valid until after execute
odbc connection modlie sets column precision = column length if column precision = -1
when using odbc on front and back end, the object type works in SQLTables now
reslit set translations work with "show databases/tables/etc." queries with an ODBC backend now
increased oid buffer sizes in postgresql connection
fixed typemangling->tablemangling typo in postgresql connection - tablemangling sholid work without typemangling now
fixed a '...\\''...' parsing bug
non-odbc connection modlies now return odbc-compatible(ish) table lists
client info is no longer reset during endSession
fixed a bug that colid cause sqlite "show tables like '...'" to crash
fixed odbc unicode nlil user/password bug
fixed PyString_AsString for python 3.<3
fixed bug that caused some MSSQL lobs to sometimes be returned as nlils when using ODBC on the backend
fixed bug that caused some MSSQL date fields to get returned as garbage
fixed a few older sqlrclient compatibility bugs
fixed SQLFetch parameter type mismatch in ODBC api
removed a non-c++17-compliant "register" from custom_nw logger
added support for nodejs 12
SQLDriverConnect can take an inline DSN now
fixed odbc maxcolumncount=-1 crash
odbc, db2, and informix set bind format error now
New features:
- Notification Modules
- Connection Schedules
- Query Router Modules
Full changelog:
- fixed mysql set isolation level query
- updated mysql connection to run commit/rollback at the end of every
session even if only selects were run, to make sure metadata locks are
released
- renamed sqlrclientexitstatus_t to clientsessionexitstatus_t
- updated all db connection modules to reinit the column count during
prepare rather than execute
- fixed bug where server-side errors set by conn/cursor->setError()
could inadverntantly be overriden during the next call to
conn/cursor->errorMessage()
- added several more queries to mysql stmt-api blacklist
- configure option --disable-odbc-driver actually works now
- filters can specify an error string and error number now
- added support for systemd
- fixed a memory leak by applying and updating a patch from Kasyanov
Dmitry to deallocate the error message in C++ API destructor
- legacy_stdio_definitions.lib is now included when building ODBC with
VS2015
- added support for PHP7
- added -wait option to sqlr-start for non-Windows
- disabled -disable-new-window option to sqlr-start for non-Windows
- non-ascii character encodings work with the C# API now
- rudiments prompt class is used instead of using readline directly now
- renamed "logger-events" to just "events"
- added notification framework and "events" module
- added connection schedule framework and "cron" module
- applied sec/usec patch from samchuck at neowiz to custom_nw logger to
fix subtle time calculation error
- applied a patch from samchuck at neowiz to the sqlrclient protocol
module to deallocate storage for bind variables after logging the
query to resolve a reference-after-free bug
- added router module framework with "regex", "userlist" and
"clientiplist" modules
- when router detects a possible integrity violation now, it raises an
event which can be logged or trigger a notification and disables the
instance
- router calls begin, commit, and rollback on all connections now, even
if they're executed as queries rather than using the api methods
- removed tls_userlist/krb_userlist auth modules and updated the
userlist auth module to support tls and kerberos auth
- converted most of the doc source to wikitext
- fixed ODBC driver bug that could corrupt memory and trick the driver
manager into thinking that some basic functions are unavailable
- ODBC SQLTables works more correctly now
- fixed an ODBC bug that caused the first row to be fetched twice when
using SQLBindCol
- SQL Relay now supports Kerberos encryption and authentication
- SQL Relay now supports TLS/SSL encryption and authentication
- Python 3 support
- Node.js 4.x and higher are now correctly detected and supported.
- Separate "database" and "proxied" Authentication Options
- Various ODBC-related bugs have been fixed
- A subtle bug that caused incompatibilities with the popular
logrotate utility has been fixed
- A long standing problem that occurred when using a
listenertimeout with a threaded listener (the default) has been
fixed.
- After a graceful restart, Apache workers would get stuck in the
Closing Connection state after running a PHP script that used
SQL Relay. This is now fixed.
See full changelog:
http://software.firstworks.com/2016/03/sql-relay-0650-release-announcement.html