1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410
|
GA 1.1.0 - 2010-01-xx
- BIT fields are now correctly decoded (Workbench bug #36239). (Andrey)
- Connection::getClientOption(const sql::SQLString & optionName, void * optionValue)
now accepts the optionName values "metadataUseInfoSchema",
"defaultStatementResultType", "defaultPreparedStatementResultType",
"characterSetResults". In the previous version only "metadataUseInfoSchema"
was allowed. The same is true for Connection::setClientOption().
- Fixed Bug #45048 "prepared statements corrupt the heap". ResultBind is back in
the prepared statement, but shared with the result set. (Andrey)
- get_driver_instance() is only available in dynamic library builds, static builds
won't have this symbol. This is done, because someone might decided to load the
dll with LoadLibrary/dlopen and needs an entry point to start using the library
(some kind of a Driver Manager). For those, who don't use cmake for building
you need to define mysqlcppconn_EXPORTS if you are loading dynamically and want
to use that entry point. (Andrey)
- ABI change - added support for optional run-time dynamic loading of the MySQL Client Library.
This is useful if you want to re-distribute a certain client library with
the connector and make sure that it gets used. It also allows you to
use a different client library for every connection. As it is an advanced
feature it is not enabled by default. By default the MySQL Client Library
will be linked at compile time just as in every version before.
- Fixed bug in ResultSetMetaData for normal statements and prepared ones, getScale
and getPrecision did return wrong results. (Andrey)
- Fixed http://bugs.mysql.com/bug.php?id=45846 . Excluding dynamically generated
and platform specific header files source packages generated using cpack (Ulf).
- Connection map property OPT_RECONNECT is now of type boolean (was long long).
- We now check LDFLAGS, CXXFLAGS and CPPFLAGS from the environment for every binary
we generate. (Ulf, Kent)
- Fixed http://bugs.mysql.com/bug.php?id=45843: cmake error if configuring an out
of source build [when not calling cmake in the root directory]. (Ulf)
- Fixed http://bugs.mysql.com/bug.php?id=44931: missing includes when using GCC 4.4.
Note that GCC 4.4 is not yet in use for any official MySQL builds. (Ulf, Lawrin)
- Fixed a performance issue of Prepared Statements. Reading large result sets has
been slow - think O(n^2). Patch by Frank Schoenheit from the OpenOffice.org
Base team. (Ulf)
- Exchanged most use cases of std::auto_ptr with boost::scoped_ptr. Migrated from
own solution to boost::scoped_array. In addition, migrated from another own
solution to boost::shared_ptr/weak_ptr for guarding access around result sets.
(Andrey)
- API incompatible change: ConnectPropertyVal is no more a struct by a typedef
that uses boost::variant. This will break your build but is pretty easy to fix.
If you had code like
---
{
sql::ConnectPropertyVal tmp;
tmp.str.val=passwd.c_str();
tmp.str.len=passwd.length();
connection_properties["password"] = tmp;
}
---
Your new code you will like this:
---
connection_properties["password"] = sql::ConnectPropertyVal(passwd);
---
Which is simpler. (Andrey)
- Fixed a bug in PS, which in combination of preparing a stored procedures without
any parameters was leading to exception, which was a problem, and was leading
to another problem which manifested itself with double free. All similar code
snippets in the Connector were fixed. (Andrey)
- The driver makes use of some Boost components (http://www.boost.org).
You need to have Boost 1.34.0 or newer installed on your system in
order to compile the driver from source. Binary distributions have no
additional dependencies over 1.0.5.
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
|