Author: wyoung
Date: Thu May 13 22:20:00 2010
New Revision: 2632
URL: http://svn.gna.org/viewcvs/mysqlpp?rev=2632&view=rev
Log:
Reorganized and rewrote some of 3.1.0 section of ChangeLog for clarity.
Modified:
trunk/ChangeLog
Modified: trunk/ChangeLog
URL:
http://svn.gna.org/viewcvs/mysqlpp/trunk/ChangeLog?rev=2632&r1=2631&r2=2632&view=diff
==============================================================================
--- trunk/ChangeLog (original)
+++ trunk/ChangeLog Thu May 13 22:20:00 2010
@@ -1,136 +1,92 @@
-3.1.0, 2010.05.12 (r2629)
-
- o Added Query::insertfrom(), plus associated classes
- NoTransactions, SQLStream, 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.)
-
- o Default MySQL version now 5.1, having become GA since 3.0.9.
-
- o Added comparison operators to tiny_int<T>. Patch by Edward
- Diener.
-
- o Calling DBDriver::disconnect() twice no longer calls
- mysql_close() twice.
-
- o Abstracted the command line parsing mechanism used by the
- examples today, and other MySQL++ programs in the future.
- It is based on the platform version of getopt() if available,
- or on a public-domain implementation of getopt() built into
- MySQL++ itself otherwise. This new mechanism provides a nice
- C++ interface to getopt(). 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.
-
- o Added is_null() member to SQLTypeAdapter, which just provides
- access to the method of the same name on the underlying
- SQLBuffer. Among other things, this lets you retrieve a
+3.1.0, 2010.05.13 (r2632)
+
+ o Default MySQL version now 5.1, having entered GA since 3.0.9.
+
+ o Lots of platform updates tracked, lots of warnings from newer
+ compilers squished. Most by me, some by Adrian Cornish.
+
+ o 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.
+
+ o Added comparison operators to tiny_int<T>. Thanks for this patch
+ go to Edward Diener.
+
+ o 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.
-
- o Above allows inserting a potentially NULL MySQL++ field from
- a result set back into a template query. It wasn't working
- before even though SQLString carries the "is null" flag,
- and it's being copied into the STA object for populating the
- template query because Query::proc() wasn't checking the null
- flag, because STA didn't provide access to it.
-
- o querydef.pl and ssqls.pl now generate a #define constant
- containing the value for the maximum number of parameters/data
- members you can use with those mechanisms with the headers
- as generated. More useful with template queries than SSQLS,
- but did it to both just to be consistent.
-
- o Skeletal support for SSQLS v2. Doesn't do anything useful
- yet, it just got caught up in the need to release 3.1 as-is.
-
- o Initializing a SQLTypeAdapter with an FP type equal to
- infinity or NaN results in SQL null if the type is also nullable,
- or 0 otherwise. Previously, we got an implementation-defined
- string, which could give invalid SQL, or could give 0, a
- different value from NaN, infinity, or SQL null. This does
- collapse the notions of NaN and infinity, but the MySQL
- reference manual doesn't say how you're supposed to preserve
- these differences.
-
- o Removed the dependency of stadapter.h on sql_types.h, just to get
- sql_tinyint*. #including tinyint.h instead, and using equivalent
- types to what sql_types.h defines. This is necessary because
- sql_types.h should be one of the last things included from
- mysql++.h, so it can define sql_* equivalents for everything
- else in MySQL++, which means all those other things need to be
- #included by that point.
-
- o Defined *_null variants for every sql_* typedef, wrapping
- all those earlier types in Null<>.
-
- o Changed the examples to use these types instead of Null<>.
- They're shorter and more closely match the corresponding
- SQL code.
-
- o Added ConnectionPool::safe_grab(), a wrapper around grab()
- and the new (private) remove(it) method, pinging the connection
- before returning it. If the ping fails, we remove it from the
- pool and go back around again, giving the best possible chance
- that the connection we return will be usable. Beware that this
- mechanism provides no protection against race conditions!
-
- o Added ConnectionPool::remove(), which takes a Connection*,
- finds it in the pool, and passes the iterator pointing to it
- to the just-added private remove() variant.
+ checks for null-ness; it will do the right thing now.
+
+ o 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.
+
+ o 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.
+
+ o 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.
+
+ o Added ConnectionPool::remove(Connection*), which removes a
+ connection from the pool.
o Added ConnectionPool::exchange(), which wraps remove()
and grab().
-
- o Added a few missing MYSQLPP_EXPORTs to operator<<()s for
- manipulators, to allow use of them with VC++ in the DLL case,
- and probably MinGW, too. Probably these functions were inline
- at one point, then got moved into manip.cpp. Problem reported
- and the fix diagnosed by Radim Dostál. Actual patch by me.
o 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.
- o The "find MySQL++" autoconf macro now searches for the library in
- lib64 subdirectories everywhere it also looks in lib. (We did
- this for the C API finder macro many releases ago, and only
- neglected to do it for this macro because it's not used by
- MySQL++ itself, just provided as a courtesy to MySQL++ users
- that also use autoconf.)
-
- o Improved mysql_loc.m4 and mysql++.m4 macros to be more useful
- in a third-party project. No net effect on MySQL++ itself.
-
- o Adding backticks around table and column identifiers in all
+ o 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.
+
+ o Added Query::replace(iter, iter), on the model of existing
+ insert(iter, iter). Thanks for this patch go to David Walthour.
+
+ o 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.
+
+ o 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.
+
+ o 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.
+
+ o Added a few missing MYSQLPP_EXPORTs to operator<<()s for stream
+ manipulators, to allow their use when MySQL++ is built as a DLL.
+
+ o Added backticks around table and column identifiers in all
code paths exercised by dtest. There are some others remaining,
particularly things like Row::field_list(). Thanks for this
patch go to Adrian Cornish.
- o Fixed a bad pointer access crash in Connection::set_option()
- triggered when the option set call fails. Thanks for this
- patch go to Kevin Regan.
-
- o Moved private FieldNames::str_to_lwr() method out into its
- own module, in the new mysqlpp::internal namespace, so other
- modules can use it. Also added an overload for this new global
- method taking std::string instead of char*.
-
- o userman build process can now find FOP on Ubuntu/Debian systems
- where FOP was installed from the package repository instead of
- by hand.
-
- o Dropped custom.h backwards-compatibility header.
-
- o ReconnectOption can now only be set after a connection is up
- in versions 5.0.13 (where the option was added to the C API)
- and 5.1.5, as the option is reset on connection establishment
- before 5.1.6.
+ o Calling DBDriver::disconnect() twice no longer calls
+ mysql_close() twice.
o Worked around a weakness on Windows that caused problems in code
with a connect(), disconnect(), connect() call pattern, when
@@ -138,13 +94,62 @@
has been a problem with this on other platforms or with other
IPC mechanisms.)
+ o Initializing a SQLTypeAdapter with a floating-point value
+ equal to infinity or NaN results in SQL null if the type
+ is also nullable, or 0 otherwise. Previously, we got an
+ implementation-defined string, which could give invalid SQL,
+ or could give 0, a different value from NaN, infinity, or
+ SQL null. This does collapse the notions of NaN and infinity,
+ but the MySQL reference manual doesn't say how you're supposed
+ to preserve these differences.
+
+ o Removed the dependency of stadapter.h on sql_types.h, just to get
+ sql_tinyint*. #including tinyint.h instead, and using equivalent
+ types to what sql_types.h defines. This is necessary because
+ sql_types.h should be one of the last things included from
+ mysql++.h, so that it can define sql_* equivalents for everything
+ else in MySQL++, which means all those other things need to be
+ #included by that point.
+
+ o The "find MySQL++" autoconf macro (config/mysql++.m4) now
+ searches for the library in lib64 subdirectories everywhere it
+ also looks in lib. We did this for the C API finder macro way
+ back in MySQL++ 2.2.0, and only neglected to do it for this
+ macro because it's not used by MySQL++ itself, just provided
+ as a courtesy to MySQL++ users that also use autoconf.
+
+ o Also improved the "find C API" macro (config/mysql_loc.m4)
+ so it, too, is more useful in third-party projects.
+
+ o Moved private FieldNames::str_to_lwr() method out into its
+ own module, in the new mysqlpp::internal namespace, so other
+ modules can use it. Also added an overload for this new global
+ method taking std::string instead of char*.
+
+ o userman build process can now find FOP when installed from
+ the standard Ubuntu/Debian package repository.
+
+ o No longer generating refman.pdf. It's difficult to generate
+ properly on some platforms, and isn't all that useful anyway
+ compared to the HTML version, which builds properly everywhere.
+
+ o Dropped custom.h backwards-compatibility header. (Deprecated
+ over a year ago in MySQL++ 3.0.0.)
+
+ o Fixed a bad pointer access crash in Connection::set_option()
+ triggered when the option set call fails. Thanks for this
+ patch go to Kevin Regan.
+
+ o ReconnectOption behavior now knows about a fix in MySQL 5.1.6 and
+ newer that lets you set it either before the connection is up,
+ or after. If you try to set this option when MySQL++ is built
+ against earlier versions of the MySQL C API, it will refuse to
+ set the option because it knows the option will be reset when
+ the connection comes up.
+
o No longer trying to make the C API library read from a "my"
options file before connect. It does that by default, and
the file is supposed to be .my.cnf anyway.
-
- o No longer generating refman.pdf. It's difficult to generate
- properly on some platforms, and isn't all that useful anyway
- compared to the HTML version, which builds properly everywhere.
o Reworked the load_jpeg example code for clarity, extracting
load_jpeg_file() routine as an implementation detail and
@@ -152,42 +157,24 @@
instead of allocating a C char buffer and copying that into
a std::string.
- o Better handling of 1-parameter template queries
-
o Restored support for repeating query parameters. Apparently
you could say things like "stuff %0 morestuff %0" in v2.1,
but this was broken by initial 1-parameter fixes in v2.2.
- This patch reportedly lets us have both things at once. Thanks
- for this and previous item go to Martin Gallwey.
+ This patch reportedly lets us have both things at once, and
+ improves handling of 1-parameter template queries in general.
+ Thanks for this patch go to Martin Gallwey.
o Added examples/tquery4.cpp based on test code and feedback
from Martin.
- o Query copy ctor and assignment operator now perform deeper
- copies, so you can pass Query objects around in certain ways
- that used to not be allowed. Thanks for this patch go to Steven
- Van Ingelgem.
-
- o 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.
-
- o Added -f N support to lib/*.pl to allow overriding the default
- limit of 25 fields for tqueries and SSQLSes. Also added
- --with-field-limit option to configure script so you can give
- both -f options at once during the build process.
-
o Put Comparable class in namespace mysqlpp, where it should always
- have been. Aside from being just plain wrong, it caused
- problems with Boost if you used its Comparable class and hoist
+ have been. Aside from being just plain wrong, it caused a
+ conflict with Boost if you used its Comparable class and hoist
them both into the global namespace. Thanks for this patch go
to Michael Radzewitz.
- o Added Query::replace(iter, iter), on the model of existing
- insert(iter, iter). Thanks for this patch go to David Walthour.
-
- o Lots of warning squishers and platform update tracking
- enhancements. Most by me, some by Adrian Cornish.
+ o Skeletal support for SSQLS v2. Doesn't do anything useful
+ yet, it just got caught up in the need to release 3.1 as-is.
o Various enhancements to the test suite.
_______________________________________________
Mysqlpp-commits mailing list
[email protected]
https://mail.gna.org/listinfo/mysqlpp-commits