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
sqlrelay 0.63
- suppressed ruby configure warning
- fixed glib detection if pkg-config isn't present
- fixed mono detection on freebsd
- fixed node.js yes/no misreport bug in configure script
- added freetds tcl test
- fixed slashes in tcl tests for windows
- updated docs to mention firebird buffer size parameters
- updated MAX_ITEM_BUFFER_SIZE to 32768 for firebird
- fixed ruby detection on fedora 22
- fixed missing export for setAuth/ResponseTimeout in ruby api
- added manual include of inttypes.h in php api to work around issue
with define/undef games, revealed on openbsd 5.7
- tweaked ruby cflags script for debian 8
- refactored mysql detection
- tweaked unixodbc detection to also look in /usr/include/odbc
- renamed "oracle8" connection plugin to "oracle"
- renamed "sybase" connection plugin to "sap"
- updated identity tests in api's/cmdline clients to use
charstring::contains() rather than !charstring::compare()
- implemented missing destructors for ADO.NET Data Provider
sqlrelay 0.62
- added query filter plugin framework
- added regex, string and pattern filters
- added normalization translation
- added reformatdatetime result set translation
- fixed error in sqlrconfigfile class that could cause sqlr-start to crash
if one instance defines addresses but the next doesn't
- added query status flag to sqlrservercursor
- tweaked odbc driver's SQLGetTypeInfo()
- field name is passed into runResultSetTranslations() now
- added support for maxitembuffersize, maxselectlistsize, and maxbindcount
for firebird
- added native api for node.js
- added recognition of bigint, ubigint and uniqueidentifier fields
in freetds/sybase
- added nullsasnulls command to sqlrsh
- added workaround for freetds empty (but non-null) text fields not getting
properly converted to null-terminated empty strings
- fetchatonce, maxitembuffersize and maxselectlistsize are set to defaulting
values if invalid values are given for them
- added lazyconnect option to PHP PDO and Perl DBI drivers (defaults to 1)
- direct Transact SQL which returns a result set is now supported
with Sybase/SAP/MSSQLServer/FreeTDS
- added docs for authentication, query translation, query filter and
result set translation modules
- added -fPIC to sqlrserver-config --cflags, if supported
- the "default" auth module is now called "userlist"
- added database auth module that is analagous to authtier="database"
- replaced passwordencryption attribute with passwordencryptionid
- added --disable-postgresql8-api configure option
- tweaked -Werror detection in configure script
- refactored sqlr-bench build to work on windows
- documentation, examples and tests are now covered by a license
- reflecting modern interpretation of the GPL, The license for
The SQLRelay Server (as designated in COPYING) license now carries
an exception, explicitly allowing it to be linked with various non-GPL
compatible libraries
- license is installed now
sqlrelay 0.61 skipped
sqlrelay 0.60
- fixed true->false transposition in sqlrservercontroller::interceptQuery
that could lead to a reLogIn loop
- disabled -Werror for gcc < 2.7
- applied George Carrette's patch to fix PDO connectstring options
- migrated directory/file paths info into sqlrpaths class
- removed undocumented and not-so-relevent-these-days
MAX_CONNECTIONS/overridemaxconnections failsafe in sqlr-start
- fixed java header detection for javac located in /usr/bin
- updated java api to support non-null-tolerant implementations
of environment::NewStringUTF()
- the perl api builds correctly on OSR5 again
- the postgresql sslmode is omitted entirely from the connect string now,
if it's disabled, to prevent problems with older versions of postgresql
that don't support the parameter at all
- mono 2.8 or greater is required now
- added a datedelimiters attribute to the instance tag in sqlrelay.conf
to limit what date delimiters are used when translating dates
- re-added mssqlserver detection, which had been accidentally removed
- fixed statically-linked build
- fixed mysql lob field bug that could cause a crash
Do it for all packages that
* mention perl, or
* have a directory name starting with p5-*, or
* depend on a package starting with p5-
like last time, for 5.18, where this didn't lead to complaints.
Let me know if you have any this time.
A full refactor and split-up into separate packages for the various APIs and backends.
Changelog since 0.43 follows.
0.55 - fixed a sql translation bug related to exists clauses
added deployment projects for windows
tweaked make.batch install target to install 32-bit files under
C:\Program Files (x86)
added a timeout parameter to db2 and odbc connect strings
fixed a bug that could cause a connection's ttl to fail because a
semaphore was left signalled when another connection's ttl
expired
updated handoff="proxy" code to work with sessionhandler="thread"
replaced waitpid call in sqlrscaler with rudiments equivalent
got the server-side stuff to compile on windows
added configurable fetch buffer sizes to sybase, freetds and db2
connections re-distribute themselves periodically if the database is
behind a load balancer now
fixed a bug that caused sqlrsh to incorrectly interpret internal
commands with leading whitespace when run from a script or on
the command line
fixed a bug that caused cursors not to be completely cleaned up after
when dynamic scaling is used
fixed a bug that caused the response timeout to be handled improperly
added response timeout command to sqlrsh
added support for clobs/blobs with firebird
fixed a blob-related bug with sqlite
added support for blob input binds with db2
added support for clob/blob output binds with db2
improved clob/blob fetching with db2
inputBindClob/Blob methods work with all db's now
added -Wno-unknown-pragmas flag (if it it supported) to java build for
solaris 8
updated default item buffer sizes to 32768 for sybase, freetds, db2
and odbc
applied Gerhard Lausser's patch to improve Oracle instantclient
detection
0.54 - fixed bugs that caused problems when unopened result sets were closed
added protocol identification phase to client/server protocol
split client protocol handling out into its own class and abstracted it
updated oracle code not to relogin when dropping tables unless a
temp table with an "on commit preserve rows" was run
updated server to run table-drop and session-end queries after the
session-end commit/rollback, as some queries on some platforms (
ncluding drop-table on oracle) cause an implicit commit and
the rollback needs to be run first
replaced gettimeofday calls with calls to datetime::getSystemDateAndTime
fixed a bug in slow query logger that caused it to display the wrong
query time
a few mingw32 tweaks
fixed a few PDO driver bugs related to affected row counts and
last insert id
implemented PDO exceptions
implemented support for PDO::ATTR_EMULATE_PREPARES by using
substitution variables
added foundrows and ignorespace options to mysql connect string
fixed a bug where affectedRows() would return -1 for MySQL selects
instead of the same value as rowCount()
updated sqlr-connection code not to get db host name and ip address
at startup unless logging is enabled to work around issues
where people fail to put the db host name in dns
fixed a subtle bind format translation bug that caused errors when
translating from oracle-style binds to mysql-style if the
varaibles were out of order with the placeholders in the query
fixed bugs in the mysql and postgresql connection code that assumed
that the bind variables were bound in order, independent of
their names
resolved a paradox involved in detecting whether the current mysql
query needs to have its bind variables faked or not
added support for client-side debug-to-file
added debug-to-file support to command line clients
tweaked server processes to use process::spawn instead of system() and
process::fork()/process::exec()
added another error string to detect down mysql database
added support for a multi-threaded listener
fixed a bug that could cause a crash when logging connection-level
errors
added back x64-detection so sybase and db2 libraries will be detected
properly
added support for forward-only cursors to the PDO driver
fixed a bug that could cause one (and only one) dynamically spawned
connection daemon to ignore its ttl
added support for get/set result set buffer size to the PDO driver
updated configure test for xsubpp
updated configure test for tcl to support multi-arch
updated configure test for python to support multi-arch
added custom PDO driver attributes to access db type, version, host
name, ip address and bind format
added custom PDO driver attribute to get/set current database
added custom PDO driver attribute to set whether or not to get column
info when fetching the result set
updated db2 to re-login when it sees error -30081
0.53.1 - updated the configuration and tuning docs a bit
fixed a Makefile bug that caused "make clean" to be interrupted
extern "C"-wrapped sys/times.h for OSR500
0.53 - added support for sqlite statement api and native binds
fixed some leaks related to using sys::getHostName()
added multiarch detection
added PHP PDO driver
fixed a bind variable translation bug where output binds followed by
:= would not be detected
dropped zope support (for now)
dropped PHP Pear DB support
refactored init script - one script should work on all platforms now
updated init script installation - should work on virtually all unixes
added OS X launchd configuration
updated the sqlr-listener to clean up files related to ipc, sockets
and marking whether the db is up or down on exit
sqlr-start no longer starts the cache manager
added a second init script for the cache manager
plugins are statically linked into libsqlrserver if the platform
doesn't support shared libraries (or if --disable-shared is
specified at configure time)
the perl API should build with old versions of perl (5.00X) on older
platforms (redhat 4.2, 5.2, 6.2, etc.) now
updated postgresql bind docs
added dateyyyyddmm parameter
added yyyyddmm parameter to translatedates translation
added SQLR_MYSQL_DATE_YYYYDDMM envrionment variable to mysql drop-in
library
added SQLR_ODBC_DATE_YYYYDDMM envrionment variable to odbc driver
0.52 - sqlrsh has long reported the wrong version, fixed that
added csv support to sqlr-export and a -format xml|csv option
replaced snprintf calls with charstring::printf calls
added a test for sys/vnode.h to work around an issue with perl on
SCO OSR6
added workarounds for old versions of sqlite without sqlite3_malloc
and sqlite3_free with char * argument
fixed error with sqlserver where "describe <table>" would return
columns in alphabetical order rather than the order they
are in the table
the code freetds uses to get column names from MS SQL Server works
for temp tables now
added informix->mssqlserver translation for select into queries
added translation to convert ||'s to concat() calls or +'s
added a long-missing "delete clientsock" to sqlrlistener that could
cause a crash after enough time
various documentation tweaks
added handling for "select into" queries to
temptableslocalize/sybaseize translations
fixed various crashes that could occur when a query filter was used
updated the query routing and filtering doc
sqlrsh supports multiple commands on a single line or on the
command-line now
exit/quit in a sqlrsh script aborts the script now
improved date/time parsing for translations and result-set conversions
fixed lots of cases where const char *'s were being deleted
added 64-bit build support for windows
combined sqlrclient files for faster compiling
converted \t to actual tab in regular expressions for
posix-compatibility
0.51 - 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
0.50 - fixed sqlrserver-config script to return data for libsqlrserver
rather than libsqlrconnection
added test for SQLROWSETSIZE for odbc that doesn't define it
updated postgresql drop-in library enough to work with psycopg2-2.4
with various caveats and tweaks
fixed NULL dereference in custom_nw logger
added support for dbversion, show tables/databases and describe for
SQL Server via freetds
fixed a subtle bug that could cause the wrong triggers to be run
fixed a reference-after-free in
sqltranslations::removeReplacementTable
fixed an uninitialized variable (sqltr) in sqlrcontroller class
updated the freetds connection to support multiple cursors correctly
added config parameters for reformatting dates in the result set
added various query translations for mssqlserver
added an mssqlserver error map for the mysql drop-in library
fixed a memory leak in the freetds version-checking code
added new search paths and default prefix for syllable
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>
0.49 - fixed various issues that came up when cross-compiling
fixed make uninstall to remove a few things that it missed
fixed -pthread annoyance
added -Werror to default build for most components
fixed various issues revealed by -Werror
added password encryption framework
added rot,md5 and crypt password encryption plugins
moved modules to libexec and removed the libsqlrelay_ prefix
moved modules out of the connection directory and into their own
directories under src
reorganized code tree to compile faster
updated clean targets in Makefiles to run faster
fixed a bug that could cause problems when fetching from an output
bind cursor under a very specific set of circumstances
reorganized server code into libsqlrserver
implemented the swisscomm log format as a plugin
added dbHostName and dbIpAddress methods to the client API
refactored authentication to remove a client-server round-trip
replaced handoff="reconnect" with handoff="proxy" which uses
listener-proxying to remove a client-server round-trip
disabled nagle's algorithm for all sockets
fixed a bug that could cause a hang if the db login failed
updated reading of skip and fetch parameters not to rely on buffering
refactored login error reporting
fleshed out the ODBC driver significantly
added docs for using SQL Relay from ODBC and JDBC
refactored windows make.bat script
0.48 - integrated patches from Neowiz for:
handling for oracle errors ora-01033, ora-02067 and ora-04068
bind validation when using the statement cache
optionally rejecting oracle queries with duplicate
bind variables
sqlrconnecton::setClientInfo/getClientInfo
query logging
separate authentication and response timeouts on the client-side
environment variables for setting timeouts
sqlrelay-level errors for exceeding various bounds
improved statistics gathering
refactored Oracle re-prepare logic
created a query logging framework
implemented the current slow query log as a plugin
implemented the neowiz query log format as a plugin
created a custom query framework
implemented the neowiz statistics gathering commands as custom queries
added a test program for triggers, translations and other extensions
and obscure features
fixed several bugs in the informixtooracledates translation
added a droplocalizedtemptables trigger
added support for "global temporary" to temptableslocalize translation
removed oracletemptablespreserverowsbydefault translation -
temptableslocalize is much more effective
fixed a bug that caused a "no server-side cursors" error to occur if
when a new session is started if cursors="0" in sqlrelay.conf
the client no longer aborts a result set before sending a new command,
it just sends the new command, eliminating a client/server
round-trip
replaced sqlr-connection-"dbase" with a single sqlr-connection program
that loads plugins for each database
0.47 - fixed bug that caused sqlr-export to output negative xml-entity values
fixed single-quote-escaping in sqlr-export
forced handoff="reconnect" for Cygwin and Linux<2.2
updated all command line programs to use the same command line
argument structure
added a "fields" command to sqlrsh
added a -command argument to sqlrsh so commands and queries can be
run from the command line directly
renamed query and fields to sqlr-query and sqlr-fields
improved readline detection in the configure script
added getDatabase/Table/ColumnList support to odbc and mdbtools
connections
added detection and support for openjdk
integrated patches from Neowiz for:
using -g3 if available when --enable-debug is specified
support for using the oracle statement cache
fixing an oracle column-resource-related memory leak
eliminating sqlr-start delay
"using namespace rudiments" declaration fixes
added a faq entry about common OCIEnvCreate errors
removed default id warning from sqlr-cachemanager
removed coloration from sqlrsh
updated begin, commit and rollback to return errors if they fail
updated firebird docs
added parsing of standalone constraints in a create table query
0.46 - refactored the translation framework to mimic the trigger framework
added make.batch file for building on windows
added C# API and ADO.NET adapter
added begin method to API's
added sqlrelay.xsd
added date binds
applied Georgiy Kirichenko's missing flushWriteBuffer() patch
fixed some subtle bugs in the Ruby DBI module that modern versions of
Ruby DBI reveal
fixed sql parser errors involving "not null" and union clauses
added a translation to replace double-quoted string literals with
single-quoted string literals
fixed a sql parser bug where "group" of a group by clause could be
misinterpreted as a table alias
updated the scaler to poll 10 times per second and also accept a
trigger from the listener to mitigate race conditions that
can become problematic when connections="0" is used
added C# and ADO.NET docs and updated windows documentation
updated the documentation
added support for waitfordowndatabase config parameter
applied some odbc fixes from Chae Young-ku
added explicit support for outer join operators to the sql parser
dynamic-ized triggers and translations
added a "matches" to "like" translation
added a "serial" to "autoincrement" translation
fixed debug option to query command line client
added javac compile test to configure script
fixed an __attribute__ problem that could occur if perl was compiled
with gcc>2.95 but used on a system with only gcc-2.95 available
fixed an oustanding tcl bug that caused cursors not to be created
fixed several bugs related to escaping quotes
refactored OS detection in configure script
added \n after reading from stdin on Haiku
updated docs to reflect that mysql supports ?-based bind vars
0.45 - added trigger framework
added support for getting the native database error number
added support for mapping native error numbers to MySQL error numbers
for the mysql drop-in replacement library
renamed all .C files to .cpp for windows
added msvc projects for sqlrclient, sqlrclientwrapper, sqlrutil and
sqlrsh and got them all working natively on windows
updated code so ttl="0" works as expected
updated code so dynamic scaling of cursors works as expected
documented dynamic scaling of cursors somewhat
fixed a few mdbtools errors
column aliases work as expected now with firebird
fixed a bug where if an app either enabled or disabled autocommit,
that could become the default status of autocommit rather than
what was set in the config file
added autocommit on/off to sqlrsh
fixed a bind-var-related memory leak in mysql drop-in lib
fixed return values in mysql drop-in lib
updated getTableList() to exclude system tables
applied Benno Lange's localstatedir patch to fix a case where the
localstatedir command line parameter wasn't working properly
applied Renat's listener alarm handling patch
0.44 - updated postgresql drop-in lib for postgresql 8/9 compatibility
updated mysql drop-in lib for mysql 5.2+ compatibility
applied Renat's patch to fix the client session count in the stats
added getDatabase/Table/ColumnList method/functions to API's
added string inputBind method/function with length
added bind variable translation
added transaction block emulation