







 |
C++ ResourcePool Changelog
V0.99.21 - 2008-04-21 [ Download ]
-
An optimized BatchCommand for oracle SQL was implemented.
This command can dynamically identify statements suitable for array execution in a single server roundtrip.
To gain from this, you just need to make sure to use RP::Command::SQLBatch in continutation mode (otherwise the optimization will not take place!) and put your SQLExecute statements into the batch. Identical statements (SQL string needs to match exactly) will then be executed using the oracle array execution feature.
-
The BatchCommands continuation mode sementic was changed so that a user is expected to continue execution upon an error until the complete batch was executed. Aborting prior full execution leads to undefined behaviour. Users which wish to abort execution upon an error should not use continuation mode OR use other mechanisms to re-gain a defined behaviour. For SQL resources it might be useful to wrap the Batch into a Transaction to be able to rollback but still use continuation mode.
-
It is no longer allowed to add additional Commands to an already executed BatchCommand. An attempt will cause an exception thrown.
-
The operator<<(std::ostream) was implemented for most predefined commands. Commands can be "printed" like std::cout << command for debug purposes.
V0.99.20 - 2008-04-14 [ Download ]
-
Some missing #include directives were added to compile with GCC 4.3.0.
-
Fixed a bug which prevented compilation with GCC 3.2 and 3.3.
V0.99.19 - 2008-03-25 [ Download ]
-
Fixed an buffer alignment issue which caused program crashes on SPARC systems due to misaligned indirections.
-
Made configure check also ${ORACLE_HOME}/lib32 in case ${ORACLE_HOME}/lib doesn't work. This makes it possible to build 32 bit applications on 64 bit architectures where ${ORACLE_HOME}/lib includes the 64 bit oracle libraries.
-
Fixed a bug which caused fetching of LOB values fail on MSB architectures (like SPARC).
-
Fixed a bug which could cause an inappropriate exception in case NULL columns are fetched (again).
-
Included the flex generated files as well as FlexLexer.h into the distribution so that flex+ is not required anymore to build ResourcePool.
-
This release was successfully tested on Solaris 10 running an Oracle 11g client in a 32 bit build.
-
Updated to the most recent version of autoconf(2.61), automake(1.10.1) and libtool(2.2)
-
Disabled building of static libraries per default. You can still --enables-static manually, if you like.
V0.99.18 - 2008-02-26 [ Download ]
-
NULL handling does work for LOBs now.
-
It's now defined that bindout() variables will not be changed in case the column is NULL.
V0.99.17 - 2008-02-18 [ Download ]
-
A bug which could cause "ORA-01000 maximum open cursors exceeded" when using SQLBatch was fixed.
V0.99.16 - 2008-02-02 [ Download ]
-
Fixed a bug which caused inappropriate ORA-01406 if a numeric value was fetched into a string variable.
-
Made the MySQL warning 1263 "Data truncated" cause an exception to be thrown. This "warning" indicates that the data added to the database were not correctly stored, reason enough to tell the application about. If this warning is happening, the row was inserted by MySQL but some column value was cut-off, the application must use a transaction if this case shall be rolledback.
-
Added missing template instantiations for bind() and bindout() to the Runtime Selectable database driver (all ISO C++ fundamental types).
-
Aborting an oracle operation (ORA-01013) does not cause a failover to happen.
-
The oracle driver is now more robust against table definition changes. This is accomplished by invalidating the cache of stored select list definitions upon ORA-01406.
V0.99.15 - 2007-11-16 [ Download ]
-
Added continuation support to BatchCommands. If enabled, reexecution of a already executed BatchCommand will continue after the position where the last execution stoped due to an error (if there was any).
-
The clearParameters() method was added to the BindInterface. All Commands which support bind() operations can now be cleared so that binding of new values is possible.
-
Removed BatchCommand::back(). Access the elements via the begin() iterator instead.
-
The oracle ORA- error messages were cleaned up to not include a newline at the end.
V0.99.14 - 2007-10-16 [ Download ]
-
Introduced the Transaction command (also via RTSQL classes available). The previous versions did already include a oracle transaction command which was not documented. This release refactors this previous approach and supplies also the mysql implementation of transactions.
-
Little performance improvements.
-
Refactored to no longer have two types of resources (plainresources vs. Resource classes).
-
Introduced the BatchCommand which takes care to sequentlually execute several nested Commands.
V0.99.13 - 2005-09-23 [ Download ]
-
Corrected handling of NoFailoverExceptions. Previously it did just not work.
-
Fixed a bug which could cause undefined behavior in MultiThreadedModel when a caller had to wait for resources (when the Max limit is reached).
-
The argument validation of the bindout() and isnull() methods of SQLSelect(Row) commands has been corrected.
-
Fixed a bug in the Cache class which caused an unreasonable exception in case an already cached value is put again.
-
The isnull() method has been added to the Runtime selectable SQL driver (fatalmind::ResourceType::SQL).
-
The NoFailoverExceptions thrown in the mysql driver do now
include the correct message. The messages were lost
due to a missing explicit constructor call to the virtual
base class.
-
The getFactory() method in ResourcePool is now public and returns a const reference.
-
Implemented some rudimentary statistics. See ResourcePool.getStats() for details.
-
Building improvement: -lrt is used (and not used) more correctly.
-
The testing framework has been extended to optionally perform testing in multiple threads. The default behavior has not been changed (make check does not use multiple threads). However when running the test programs manually you can add "-m" as argument. Each "m" does add an additional thread for testing. However, the test programs itself need also to provide such test cases.
-
The test cases (used with make check) do now use the complete library. This has the drawback that building must always be done in the top level directory before performing tests. However, the tests use the real library now (and not just a subset) so that the overall testing quality is a little improved.
V0.99.12 - 2005-09-11 [ Download ]
-
This release adds the possibility to choose on configure time to build the complete ResourcePool library in a thread safe manner.
Although ResourcePool does support thread safety on class level,
this release supports only a library wide selection to build it
either with appropriate locking mechanisms of without (which is the default setting).
V0.99.11 - 2005-07-11 [ Download ]
-
Made GCC 4.0.0 aware. There where some minor errors and warnings which have been fixed.
-
The (not yet documented) multi threading classes have been cleaned up. Actually ResourcePool
is fully thread safe, but nobody knows it ;) One of the next releases will make this officially.
V0.99.10 - 2005-04-06 [ Download ]
-
Made compiling with Intel C++ compiler possible (v8.1).
-
Fixed some POSIX issues which caused ResourcePool to not compile on some systems.
-
Fixed Makefile so that compiling without any database support is also possible.
-
The bind() and bindout() methods are now pre-instantiated for all ISO C++ fundamental types.
V0.99.09 - 2005-03-13 [ Download ]
-
A new ResourceType SQL is available. It supports the SQLExecute,
SQLSelect and SQLSelectRow commands and can connect to
Oracle or MySQL databases confirureable on at runtime.
Previously changing the database type (e.g. from MySQL to Oracle)
required changing a typedef and
recompiling the application. The "old" way is still possible and
has minor performance benefits, since the "new" way is just a wrapper.
V0.99.08 - 2005-01-16 [ Download ]
-
The Doxygen documentation has been improved.
-
The Command template has been refactored to take
the PoolType as template argument instead of the
plainresource_t.
This was required to make some private methods
really private (previously the required friends
clause was not possible).
-
Added flex++ to the list of requirements.
The configure script will now fail if flex++
is not reachable via $PATH.
V0.99.07 - 2005-01-06 [ Download ]
-
It is now possible to create a MySQL or Oracle factory with a single
argument which includes all required data.
For Oracle the well known syntax "USER/PASS@SERVICE" is used, for
MySQL "USER[/PASS][@DB][;HOST][:PORT]".
This is a further step to reduce the differences between the MySQL
and Oracle bindings.
V0.99.06 - 2004-12-23 [ Download ]
|