Functionality added or changed:
Added new tests in
test/unit/classes
. Those tests are mostly about code coverage. Most of the actual functionality of the driver is tested by the tests found intest/CJUnitPort
.New data types added to the list returned by
DatabaseMetaData::getTypeInfo()
areFLOAT UNSIGED
,DECIMAL UNSIGNED
,DOUBLE UNSIGNED
. Those tests may not be in the JDBC specification. However, due to the change you should be able to look up every type and type name returned by, for example,ResultSetMetaData::getColumnTypeName()
.MySQL_Driver::getPatchVersion
introduced.Major performance improvements due to new buffered
ResultSet
implementation.Addition of
test/unit/README
with instructions for writing bug and regression tests.Experimental support for STLPort. This feature may be removed again at any time later without prior warning! Type cmake
-L
for configuration instructions.Added properties enabled methods for connecting, which add many connect options. This uses a dictionary (map) of key value pairs. Methods added are
Driver::connect(map)
, andConnection::Connection(map)
.New BLOB implementation.
sql::Blob
was removed in favor ofstd::istream
. C++'sIOStream
library is very powerful, similar to PHP's streams. It makes no sense to reinvent the wheel. For example, you can pass astd::istringstream
object tosetBlob()
if the data is in memory, or just open a filestd::fstream
and let it stream to the DB, or write its own stream. This is also true forgetBlob()
where you can just copy data (if a buffered result set), or stream data (if implemented).Implemented
ResultSet::getBlob()
which returnsstd::stream
.Fixed
MySQL_DatabaseMetaData::getTablePrivileges()
. Test cases were added in the first unit testing framework.Implemented
MySQL_Connection::setSessionVariable()
for setting variables likesql_mode
.Implemented
MySQL_DatabaseMetaData::getColumnPrivileges()
.cppconn/datatype.h
has changed and is now used again. Reimplemented the type subsystem to be more usable - more types for binary and nonbinary strings.Implementation for
MySQL_DatabaseMetaData::getImportedKeys()
for MySQL versions before 5.1.16 usingSHOW
, and above usingINFORMATION_SCHEMA
.Implemented
MySQL_ConnectionMetaData::getProcedureColumns()
.make package_source now packs with bzip2.
Re-added
getTypeInfo()
with information about all types supported by MySQL and thesql::DataType
.Changed the implementation of
MySQL_ConstructedResultSet
to use the more efficient O(1) access method. This should improve the speed with which the metadata result sets are used. Also, there is less copying during the construction of the result set, which means that all result sets returned from the metadata functions will be faster.Introduced, internally,
sql::mysql::MyVal
which has implicit constructors. Used inmysql_metadata.cpp
to create result sets with native data instead of always string (varchar).Renamed
ResultSet::getLong()
toResultSet::getInt64()
.resultset.h
includes typdefs for Windows to be able to useint64_t
.Introduced
ResultSet::getUInt()
andResultSet::getUInt64()
.Improved the implementation for
ResultSetMetaData::isReadOnly()
. Values generated from views are read only. These generated values don't havedb
inMYSQL_FIELD
set, while all normal columns do have.Implemented
MySQL_DatabaseMetaData::getExportedKeys()
.Implemented
MySQL_DatabaseMetaData::getCrossReference()
.
Bugs fixed:
Bug fixed in
MySQL_PreparedResultSet::getString()
. Returned string that had real data but the length was random. Now, the string is initialized with the correct length and thus is binary safe.Corrected handling of unsigned server types. Now returning correct values.
Fixed handling of numeric columns in
ResultSetMetaData::isCaseSensitive
to returnfalse
.