GA 1.0.5 - 2009-04-20
- Changed the interface of sql::ConnectionMetaData, sql::ResultSetMetaData and sql::ParameterMetaData to have a protected destructor. In this way the client code doesn't need, and won't be able, to destruct the metadata objects returned by the connector. The connector will handle their destruction. This enables statements like : connection->getMetaData->getSchema(); without the result of leaking memory because we lost the pointer returned by getMetaData(). (Lawrin, Andrey) - Large overhaul of the code to improve the memory management to not leak in exceptional situations. Big improvement compared to Beta1. (Andrey) - Fixed the interface of sql::Driver and sql::Connection so they accept the options map by alias instead of by value. (Andrey) - Changed the return type of sql::SQLException::getSQLState() from std::string to const char * to be consistent with std::exception::what(). (Andrey) - Implemented getResultSetType() and setResultSetType() for Statement. Used are TYPE_FORWARD_ONLY, which means unbuffered result set and TYPE_SCROLL_INSENSITIVE, which means buffered result set. (Andrey) - Implemented getResultSetType() for PreparedStatement. The setter is not implemented because currently PreparedStatement can't do refetching and storing the result means the bind buffers will be correct. (Andrey) - Added "defaultStatementResultType" to MySQL_Connection::setClientOption() as an option. Also the method now returns `sql::Connection *`. (Andrey) - Added Result::getType() and implemented it in the three result set classes. (Andrey) - Enabled tracing functionality when building with VC8 and up (VS2005 and up). (Andrey) - Added better support for named pipes, on Windows. Use pipe:// and add the path to the pipe. Shared memory connections are currently not supported. (Andrey) - Fixed a bug in MySQL_Connection::setSessionVariable() which led to exception being thrown. (Andrey) Beta 1.0.4 - 2009-03-31 - Prepared support for upcoming Connector/C. (Georg) - Added Windows installer. (Georg) - Bumping up CMake minimum version requirement from 2.4.2 to 2.6.2. We need the latest version for Windows. (Lawrin) - Added "metadataUseInfoSchema" to connection propery map which allows you to control the use of the INFORMATION_SCHEMA for meta data. (Andrey) - Fixed a bug in all implementations of ResultSet::relative() which was giving wrong return value although positioning was working correctly. (Andrey) - Fixed a leak in MySQL_PreparedResultSet when the result was containing a BLOB column. (Andrey) - Implemented MySQL_ConnectionMetaData::supportsConvert(from, to). (Andrey) - Introduced sql::DataType::YEAR to complement MySQL's YEAR type. (Andrey) - Introduced PreparedStatement::getMetaData(). (Andrey) - Introduced ResultSetMetaData::isZerofill(), which is not in the JDBC specification. (Andrey) - Fixed all implementations of ResultSet::isNull() to check whether the current position is on a real row, not isBeforeFirst() nor isAfterLast(), like all getXXX methods do. (Andrey) - Implementation for MySQL_DatabaseMetaData::getProcedures() when INFORMATION_SCHEMA is asked not to be used. (Andrey) - Removed MySQL_DatabaseMetaData::getProcedureColumns() from the interface. Until now it was returning always an empty result set. Full implementation will be added at a later stage. (Andrey) - Changed a bunch of methods of DatabaseMetaData()::getXXX, which returned `int` to return `unsigned int` because it makes more sense. (Andrey) Alpha 1.0.3 - 2009-03-03 - Added new tests at test/unit/classes. Those tests are mostly about code coverage. Most of the actual functionality of the driver is tested by the tests found at test/CJUnitPort. (Ulf) - New data types added to the list returned by DatabaseMetaData::getTypeInfo(); FLOAT 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(). (Andrey) - MySQL_Driver::getPatchVersion introducted. (Andrey) - Major performance improvements due to new buffered resultset implementation by Andrey. (Ulf) - Addition of test/unit/README with instructions for writing bug/regression tests. (Ulf) - Experimental support for STLPort. This feature may be removed again at any time later without prior warning! Check cmake -L for configuration instructions. (Andrey) - Fixed a bug in MySQL_PreparedResultSet::getString(). Returned string had real data but the length was random. Now, the string is initialized with correct length and thus is binary safe. (Andrey) - Added properties-enabled (map of key->value) methods for connecting, which add many connect options. (Andrey) -- Driver::connect( map ) -- Connection::Connection( map ) - New BLOB implementation. Got rid of sql::Blob in favor of std::istream. C++'s IOStream library is very powerful, similar to PHP's streams. It makes no sense to reinvent the wheel. For example one can pass a std::istringstream object to setBlob() if the data is in memory, or just open a file std::fstream and let it stream to the DB, or write own stream. Similar will be true for getBlob() where we can just copy data, if buffered result set, or stream, if we implement it. (Andrey) - Implemented ResultSet::getBlob() which returns std::stream. (Andrey) - Fixed MySQL_DatabaseMetaData::getTablePrivileges() to work correctly. Test cases added in the first unit testing framework. (Andrey) - Implemented MySQL_Connection::setSessionVariable() for setting variables like sql_mode. (Andrey) - Implemented MySQL_DatabaseMetaData::getColumnPrivileges(). (Andrey) - cppconn/datatype.h changed and used again. Reimplemented the type subsystem to be more usable - more types for binary and non-binary strings. (Andrey) - Implementation for MySQL_DatabaseMetaData::getImportedKeys() for MySQL versions before 5.1.16 using SHOW, and above using INFORMATION_SCHEMA. (Andrey) - Implemented MySQL_ConnectionMetaData::getProcedureColumns(). (Andrey) - make package_source packs now with bzip2. (Andrey) - Re-added getTypeInfo() with information about all types supported by MySQL and the sql::DataType. (Andrey) - Exchanged the implementation of MySQL_ConstructedResultSet to use more efficient non O(n) but O(1) access method. This should improve the speed with which the metadata result sets are used. Also, there is less copy during the construction of the result set, which means that all result sets returned from the metadata functions will be faster. (Andrey) - Introduced, internally, sql::mysql::MyVal which has implicit constructors used in mysql_metadata.cpp to create result sets with more native data instead of always string (varchar). (Andrey) - Renamed ResultSet::getLong() to ResultSet::getInt64(). resultset.h includes typdefs for Windows to be able to use int64_t. (Andrey) - Introduced ResultSet::getUInt() and ResultSet::getUInt64(). (Andrey) - Corrected handling of unsigned server types. Now returning correct values. (Andrey) - Fixed handling of numeric columns in ResultSetMetaData::isCaseSensitive to return false. (Andrey) - Better implementation for ResultSetMetaData::isReadOnly. Values generated from views are read-only. Seems that these generated values don't have `db` in MYSQL_FIELD set, while all normal columns do have. (Andrey) - Implemented MySQL_DatabaseMetaData::getExportedKeys(). (Andrey) - Implemented MySQL_DatabaseMetaData::getCrossReference(). (Andrey) Alpha 1.0.2 - 2008-12-19 - Adding test/unit as a basis for general unit tests based on the new test framework, see test/unit/example for basic usage examples (Ulf) - Fixed MySQL_PreparedStatement::setBlob() to really work. In the tests there is a simple example of a class implementing sql::Blob. (Andrey) - Addition of a new unit test framework for JDBC compliance and regression testing. (Lawrin) - Implemented MySQL_ResultSetMetaData::getPrecision() and MySQL_Prepared_ResultSetMetaData::getPrecision(), updating example. (Andrey) - Fixing bug in FLOAT handling. (Andrey) - Fixing bug in getString(): getString() is binary safe now (Andrey), new example. (Ulf) - Fixing bugs in MySQL_PreparedStatements: setBigInt() and setDatetime() have decremented the internal column index before forwarding the request. This resulted in double-decrement and wrong internal column index. Typical error message: setString() ... invalid "parameterIndex" (Ulf) - Adding PHP script examples/cpp_trace_analyzer.php to filter the output of the debug trace. Please see the inline comments for documentation. This script is unsupported! We do no promise to maintain it. (Ulf) - Fixed bugs in MySQL_DatabaseMetaData : All supportsCatalogXXXXX methods were returning `true` and all supportSchemaXXXX methods false, which is not as it should be. Now it is reversed, to be consistent with the rest. (Andrey) - Implemented MySQL_PreparedStatement::clearParameters(). (Andrey) - Fixed a bug in MySQL_ConnectionMetaData::getColumns() which was performing a cartesian product of the columns in the table times the columns matching columnNamePattern. example/connection_meta_schemaobj.cpp extended to cover the function. (Andrey) - Fixed lame bug in MySQL_ConnectionMetaData::getIndexInfo() which did not work because the schema name wasn't included in the query sent to the server. (Andrey) - Implemented MySQL_PreparedStatement::setNull(). (Andrey) - Reverted implementation of MySQL_DatabaseMetaData::getTypeInfo(). Now unimplemented. In addition, removed cppconn/datatype.h for now till we havea proper implementation of the types. - DATE, DATETIME and TIME are now being handled when calling MySQL_PreparedResultSet:: -- getString() -- getDouble() -- getInt() -- getLong() -- getBoolean() - Fixed MySQL_PreparedStatementResultSet::getDouble() to return proper value when the underlying type is MYSQL_TYPE_FLOAT. (Andrey) - Changed ResultSetMetaData:: -- getColumnDisplaySize() -- getPrecision() -- getScale() to return unsigned int instead of signed int. (Andrey) - Implemented getScale(), getPrecision() and getColumnDisplaySize() for MySQL_ResultSetMetaData and MySQL_Prepared_ResultSetMetaData. (Andrey) Alpha 1.0.1 - 2008-12-01 - New directory layout - MySQL Workbench 5.1 using Connector/C++ for its database connectivity. - Addition of Connector/J tests converted - Changing sql::DbcException to implement the interface of JDBC's SQLException. And renamed it to sql::SQLException. - Renamed sql::DbcInvalidArgument to sql::InvalidArgumentException - Renamed sql::DbcMethodNotImplemented to sql::MethodNotImplementedException - All tests changed to create TAP compliant output - Introduction of experimental CPack support, see make help - Metadata: switching to column names "TABLE_CAT" (was: TABLE_CATALOG) and "TABLE_SCHEM" (was: TABLE_SCHEMA) for JDBC compliance - ConnectionMetaData::getImportedKeys(): PKTABLE_CATALOG -> PKTABLE_CAT, PKTABLE_SCHEMA -> PKTABLE_SCHEM, FKTABLE_CATALOG -> FKTABLE_CAT, FKTABLE_SCHEMA -> FKTABLE_SCHEM - ConnectionMetaData::getPrimaryKeys(): COLUMN -> COLUMN_NAME, SEQUENCE -> KEY_SEQ, INDEX_NAME -> PK_NAME - ConnectionMetaData::getProcedures: PROCEDURE_SCHEMA -> PROCEDURE_SCHEM - ConnectionMetaData::getTables: TABLE_COMMENT -> REMARKS - All examples can be given optional connection parameters on the command line, for example `examples/connect tcp://host:port user pass database` or `examples/connect unix:///path/to/mysql.sock user pass database` - Adding experimental GCov support, cmake -DMYSQLCPPCONN_GCOV_ENABLE:BOOL=1 - ConnectionMetaData::getCatalogTerm() returns n/a, there is no counterpart to catalog in Connector/C++ - Addition of ConnectionMetaData::getSchemas() and Connection::setSchema(). None of them is in the JDBC standard - Driver Manager removed - `(n)make install` works. You can change the default installation path. Read carefully the messages after executing cmake. Installed are the static and the dynamic version of the library, libmysqlcppconn as well as the generic interface cppconn + 3 MySQL specific headers -- mysql_driver.h (if you want to get your connections from the driver instead of instantiating a MySQL_Connection object. This makes your code pretty portable against the common interface) -- mysql_connection.h - If you intend to link directly to the MySQL_Connection class and use its specifics not found in sql::Connection However, you can make your application fully abstract by not using the two headers above but the generic headers. - sql::mysql::MySQL_SQLException is gone. There is no distinction between server and client (= Connector) caused errors based on the type of the exception. However, you can still check the error code to figure out the reason. Preview 1.0.0 - 2008-08-05 - First public release |