What's new in MySQL++ 3.2.2
Mar 19, 2015
- The DBDriver::operator= would leak a live connection if you assigned a disconnected DBDriver to it. Patch by Quentin Armitage.
- Plugged a potential DBDriver instance leak in Connection ctor. Patch by Yury Alekseev.
- Explicitly #including algorithm.h in examples/multiquery.cpp for std::max().
- Added missing "break;" statements in Transaction ctor taking an isolation level parameter, which caused only the last one to do the right thing. Problem noticed by Tony Whyman, fix by me.
- The bootstrap script now checks for the existence of needed build tools before trying to use them. This lets us emit a clearer error message than the shell will. Original patch by Adrian Cornish.
- Fixed a build problem related to std::min/max with Visual C++ 2013 due to a change in the definitions provided by its header files.
- Tracked several changes made to Connector/C made since 3.2.1.
- Assorted documentation updates.
- Generating HTML with UTF-8 encoding, not 8859-1
New in MySQL++ 3.2.1 (Jun 21, 2014)
- Connection copy ctor wasn't copying the "throw exceptions" flag. The copy always had exceptions enabled.
- Fixed resetdb's first output message when you run it without arguments. It was giving a misleading message that could confuse someone.
- Previous release tarball was missing a few text files present in the source repository.
- Updated build paths for VC++ and MinGW to track a file layout change in Connector/C 6.1.2.
New in MySQL++ 3.2.0 (Aug 31, 2013)
- References to MySQL 5.1 have been replaced with 5.6, that
- being the current GA release.
- All Windows builds now assume you're using Connector/C 6.1
- instead of having installed the MySQL server on your machine
- just to get development files. If you are running a MySQL
- server on your development machine and don't want to install
- Connector/C just to make MySQL++ happy, see the README-*.txt
- file for your platform to get instructions on fixing the paths
- so the build system finds the development files under the MySQL
- server directory.
- The generated VC++ 2008 project files now assume you want 64-bit
- executables. (It is 2013 now, after all.)
- Since the VC++ 2005 project files continue to be configured for
- 32-bit builds, the easiest way to get a 32-bit project in VC++
- 2008+ is to import the VC++ *2005* project files, rather than
- adjust the build target settings of all 44 vc2008/*.vcproj
- files within the IDE.
- See README-Visual-C++.txt for more on this change.
- Added Query::replacefrom(): like insertfrom() but it uses
- REPLACE statements instead of INSERT. Patch by Adrian Cornish.
- Added support for SQL "unsigned float" columns. Patch by
- Leonardo Lang.
- Added "abicheck" top-level build target, which runs the
- ISPRAS ABI checker tool (http://goo.gl/e19lD) against
- a predecided "ABI-stable" version of MySQL++, comparing it
- against the current version. This should help avoid future
- unplanned ABI breakages, as happened between 3.0.9 and 3.1.0.
- We have chosen not to revert those changes that broke the ABI,
- but instead have chosen to accept the 3.1.0 ABI as the new
- stable ABI for the rest of the 3.x series. Running the ABI
- checker is now part of the release process, so we should not
- change the ABI again until 4.0!
- The Query::insert() and replace() overloads that take a pair
- of iterators now work with containers that only provide forward
- iterators. Idea by Adrian Cornish.
- Using libtool again on Autotools systems. It gives us
- relocatable libraries, which is needed in some linking
- situations. Patch by Adrian Cornish.
- VC++ release builds now have optimization enabled. This might
- also affect other toolchains that create separate Debug and
- Release builds, if Bakefile obeys the directive for those
- systems. (Such as, perhaps, Xcode.) Initial patch by Matthew
- Bradbury.
- Fixed a crash in CommandLine mechanism when the usage message is
- called up for programs that have no "extra" parameter and
- corresponding usage appendage. Initial patch by "Crazy Pete".
- Query::storein() now tolerates empty result sets, due either to
- DBMS failure or passing a query that never returns results,
- such as INSERT.
- Exposed DBDriver::result_empty() as Query::result_empty(). We
- did this primarily because it was needed as a helper for the
- previous fix, but it could also be useful more broadly.
- Added -Wextra to the pedantic build flags.
- Fixed the "escape" manipulator so it will work with Null
- wrapped types. Patch by "Kemet".
- ssqls2parse now depends on libmysqlpp. (It wasn't getting
- relinked when you changed the library.)
- The configure script's test for the existence of mysql_ssl_set()
- got broken by a change in the mysql_loc.m4 test, causing it to
- always return "no" even if the platform's MySQL C API library did
- have the function. Therefore, the SslOption could never be set.
- Fixes this bug: stackoverflow.com/questions/7794408
- Fixed a missing a "buried headers" ifdef wrapper for
- type_info.cpp. Patch provided by Xavier Richez.
- We now export the DBDriver class from the MySQL++ DLL when
- building on Windows. Client programs can now access it directly,
- instead of being able to access only the fields and members
- exposed through Connection and Query. Fix suggested by Xavier
- Richez.
- MinGW builds no longer require that you manually create an import
- library for the MySQL C API DLL from a .def file we provide,
- which would inevitably get outdated. We can now link directly to
- the DLL, and rely on the MinGW linker to figure out the imports.
- Split the -l flags out of LDFLAGS in the userman's example
- Makefiles. They're now in LDLIBS, which causes them to be
- put after -o $(EXE) by the default GNU make rules, where they
- should be.
- Assorted documentation and build system improvements.
New in MySQL++ 3.1.0 (Dec 14, 2011)
- Default MySQL version now 5.1, having entered GA since 3.0.9.
- Lots of platform updates tracked, lots of warnings from newer
- compilers squished. Most by me, some by Adrian Cornish.
- Added Query::insertfrom(), plus associated classes SQLStream,
- NoTransactions, and the InsertPolicy hierarchy. Also adds
- examples/ssqls6.cpp, which shows how to use this new feature.
- Thanks for this feature go to Rick Gutleber, except for
- RowCountInsertPolicy, by me.
- Added comparison operators to tiny_int. Thanks for this patch
- go to Edward Diener.
- Added SQLTypeAdapter::is_null(). This lets you retrieve a
- nullable column from the DB, then re-insert a value from that
- column back into the DB via a template query without explicit
- checks for null-ness; it will do the right thing now.
- Added -f flags to lib/*.pl header file generating scripts to
- allow overriding the default limit of 25 fields for tqueries
- and SSQLSes without having to edit the file, as in previous
- versions of MySQL++. Also added --with-field-limit option to
- the configure script so you can give both -f options at once
- during the build process. This latter is especially useful
- for automated binary package builders.
- The file lib/querydef.h (generated by lib/querydef.pl) now
- defines the MYSQLPP_TQUERY_MAX_PARAMETERS macro, giving the
- maximum number of parameters the functions in the generated file
- allow for template queries. Similarly, lib/ssqls.h (generated
- by lib/ssqls.pl) defines MYSQLPP_SSQLS_MAX_MEMBERS.
- Added ConnectionPool::safe_grab(), which pings the grabbed
- connection before returning it. If the ping fails, we remove
- the dead connection from the pool and try again. This doesn't
- eliminate the possibility of returning a dead connection;
- there is no protection against race conditions. It is merely
- a best-effort attempt.
- Added ConnectionPool::remove(Connection*), which removes a
- connection from the pool.
- Added ConnectionPool::exchange(), which wraps remove()
- and grab().
- Added a feature to Transaction, where it can send a SET
- TRANSACTION ISOLATION LEVEL query before it starts the
- transaction proper, affecting the isolation level and the scope
- of that change.
- Added ScopedConnection class. Initial version by Joel Fielder,
- lots of changes by me. Using it instead of explicit safe_grab()
- and release() calls on the pool in examples/cpool.cpp.
- Added FieldNames::operator[](size_type) overloads. This is
- necessary to correctly overload the base class versions inherited
- from std::vector.
- FieldNames wasn't doing field-by-name matches case insentitively,
- most likely since 3.0.0 when we changed it to derive from
- std::vector. This caused SSQLS (at least) to be case sensitive.
- Fixed this and renamed the stock.sdate field in the SSQLS
- examples to stock.sDate to test this.
- Added Query::replace(iter, iter), on the model of existing
- insert(iter, iter). Thanks for this patch go to David Walthour.
- Added Query::operator!(), overriding basic_ios version so that
- "if (!query)" does the right thing. Fixes problem report in
- thread http://lists.mysql.com/plusplus/8594
- Query copy ctor and assignment operator now perform deeper
- copies, so you can pass Query objects around in certain ways
- that used to cause crashes. Thanks for this patch go to Steven
- Van Ingelgem.
- Defined *_null variants for every sql_* typedef, wrapping
- all those earlier types in Null. All example programs now use
- these types instead of explicit Null-wrapped types.
- Created a C++ command line parsing mechanism for the examples
- today, and for programs coming in the future. It uses the
- platform version of getopt() if available, substituting a
- public-domain implementation that gets built into MySQL++
- itself otherwise. It's documented in the refman -- see
- the CommandLineBase class -- but it's in the newly created
- mysqlpp::internal namespace, which means we don't promise any
- sort of ABI or API stability for it. You're welcome to use it
- in your own programs, but expect it to change without warning.
- Added a few missing MYSQLPP_EXPORTs to operator