Tuesday, June 12, 2012

SQL Relay Fast Start

Introducing: SQL Relay Fast Start...

SQL Relay has many dependencies and features. Building, installing and configuring it can be quite a project. If you're just trying out SQL Relay then SQL Relay Fast Start is a much faster and easier way to get started.

It's a VMware virtual appliance, pre-loaded with all of the redistributable databases and languages supported by SQL Relay.

The VM provides running instances of MySQL, PostgreSQL, Firebird, SQLite and MS Access databases and running instances of SQL Relay, pre-configured to talk to them. There are also instances of SQL Relay pre-configured to talk to Oracle and MS SQL Server or Sybase databases. All you have to do is plug in a hostname and start them up.

Just download the image, point VMWare Player or Workstation at it, log in as sqlrelay with password sqlrelay and follow the instructions in the browser window.

At $10, SQL Relay Fast Start is less expensive than the opportunity cost of building, installing and configuring SQL Relay and a test database from scratch. Use SQL Relay Fast Start to get a feel for how SQL Relay works and what you can do with it right away. If you like what you see, then move on to building and configuring it in your environment for yourself.

SQL Relay Fast Start is available today.

Wednesday, May 2, 2012

Rudiments Update - 0.36.1 (Urgent)

There's bug in Rudiments, version 0.36 in the charstring::copy method that can cause various problems including segmentation faults. Version 0.36.1 has just been released to fix the problem. Please update.

For anyone who just wants to fix version 0.36, the fix is simple... Just edit src/charstring.cpp and look for the copy() method around like 842. It currently calls rawbuffer::copy but should be modified to have the following implementation:

char *charstring::copy(char *dest, const char *source, size_t size) {
 return strncpy(dest,source,size);
}

I changed the code in 0.36 to fix a problem on windows but the new code doesn't work properly for what should have been obvious reasons when I made the change. strncpy() will stop when it hits a null-terminator but rawbuffer::copy will copy "size" bytes no matter what, even if that's past the end of the string and off into the weeds.

Tuesday, April 10, 2012

SQL Relay - 0.45 is out

SQL Relay 0.45 is now available.

This release has the following new features:

  • support for getting the native database error number
  • support for mapping native error numbers to MySQL error numbers for the mysql drop-in replacement library
  • MSVC projects for sqlrclient, sqlrclientwrapper, sqlrutil and sqlrsh (all work natively on windows now)
  • added autocommit on/off to sqlrsh

In addition, the following things have been fixed or updated:

  • ttl="0" works as expected
  • dynamic scaling of cursors works as expected now
  • 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
  • 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 to avoid race conditions and other issues with the listenertimeout feature

Enjoy!

Stencil - 2.0.6 is out

An updated version of Stencil is now available. This is an extremely minor update with a few modifications to the configure script and a few modifications to support the latest version of Rudiments. This version requires Rudiments 0.36.

Rudiments - 0.36 is out

Rudiments 0.36 is available for general consumption.

This release features several compatibility-related updates, mostly under the hood.

  • Various things work on various old SCO systems as well as Ultrix now.
  • MSVC projects/solutions have been added and the classes that build cleanly have been included.
  • All .C files were renamed to .cpp for compatibility with MSVC.
  • Several changes were made to improve compatibility with MSVC.
  • Methods that gave access to internal structures (such as pthread_mutex_t's or statfs's) all take and return void pointers now.

SQL Relay 0.45 requires Rudiments 0.36, so if you're updating SQL Relay, make sure to update Rudiments as well.

Tuesday, January 17, 2012

Rudiments 0.35 is out

An updated version of Rudiments is now available.  This release features some minor bug fixes and a few new methods.  Nothing all that significant.  However, the new features are required by SQL Relay 0.44 so if you're upgrading SQL Relay, upgrade Rudiments as well.

SQL Relay 0.44 is out

This release introduces a host of new features.

  • The MySQL Drop-In Replacement Library has been greatly improved and updated to support MySQL 5.2 and the MySQL statement API.
  • The SQL Relay client API's support new methods to get databases, tables and columns, returning lists similar to those returned by "show databases", "show tables" and "describe table" queries.
  • Bind Variable Translation is now supported.  If your queries have ?'s in them but you want to aim them at a database that uses colon-delimited queries, or vice-versa, SQL Relay can remap the variables automatically.
  • SQL Relay can now fake transaction blocks.  If you are migrating from a DB that is in autocommit mode by default and requires "begin" or "start" queries to begin a transaction to a database that is always in a transaction, SQL Relay can fake the behavior of the first database and make the new database appear to support transaction blocks.
  • The sqlrsh command line client now supports bind variables.
  • selectDatabase()/getCurrentDatabase() methods have been added to all API's, providing a database agnostic method for switching schemas/db's.
  • The fakebinds connect string option has been replaced by a parameter at the instance level and all databases support faking of input binds now.
  • getLastInsertId() has been added to all API's.  If the database supports it natively then the native function is used.  If the database doesn't support it then a stored procedure can be specified to fake it.
  • A set of queries can be run at the beginning and end of each client session now.
This is all in addition to the standard number of bug fixes and optimizations.