MySQL++ Changelog

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