Author: wyoung
Date: Sat Feb 2 03:27:38 2008
New Revision: 2154
URL: http://svn.gna.org/viewcvs/mysqlpp?rev=2154&view=rev
Log:
v3.0.0 rc3 (yay^5...I'm getting hoarse now...)
Modified:
trunk/ChangeLog
Modified: trunk/ChangeLog
URL:
http://svn.gna.org/viewcvs/mysqlpp/trunk/ChangeLog?rev=2154&r1=2153&r2=2154&view=diff
==============================================================================
--- trunk/ChangeLog (original)
+++ trunk/ChangeLog Sat Feb 2 03:27:38 2008
@@ -1,4 +1,4 @@
-3.0.0 release candidate 2, 2008.01.23 (r2131)
+3.0.0 release candidate 3, 2008.02.01 (r2154)
o Added ConnectionPool class, primarily to let multithreaded
programs share a set of Connection objects safely in situations
@@ -7,62 +7,49 @@
o Created examples/cpool.cpp to demonstrate this new class.
o Added RefCountedPointer template, which provides automatic
- memory management and data sharing. It's not intended for use
- outside of MySQL++ itself, but because it's behind so many of
- the improvements in v3, I'm mentioning it here. Every reference
- to reference counting below refers to this template. I created
- the initial version of it, but Jonathan Wakely almost completely
- rebuilt it, and Joseph Artsimovich provided helpful commentary
- and advice as well.
-
- o Several improvements to Specialized SQL Structures (SSQLS):
+ memory management and data sharing. It's not intended
+ for use outside of MySQL++ itself, but it's the mechanism
+ behind everything below where reference counting is mentioned.
+ I created the initial version of it, but Jonathan Wakely almost
+ completely rebuilt it, and Joseph Artsimovich provided helpful
+ commentary and advice as well.
+
+ o Many improvements to Specialized SQL Structures (SSQLS):
- Renamed custom* to ssqls*. There's still a custom.h which
- #includes ssqls.h for you, but it's only temporary.
-
- - They're finally compatible with Null<>-wrapped types. This
- feature is based on the "Waba" patch posted to the mailing
- list back in the v2.0 days but with many changes, partly
- because of changes in the underlying library since those days,
- but also to be less intrusive.
+ #includes ssqls.h for you, but it's only intended to ease
+ the transition to the new name. It will go away in a future
+ release, probably as soon as v3.1.
+
+ - SSQLSes are finally compatible with Null<>-wrapped types. This
+ feature is based loosely on the "Waba" patch posted to the
+ mailing list back in the v2.0 days.
- It's no longer necessary to define a different SSQLS for each
different field set you use in queries. That is to say,
you can define an SSQLS for an entire table and store just a
subset of the table in it now, with the other fields keeping
- default values. A side benefit is that the order of the fields
- in the SSQLS no longer has to match the order of fields in
- the result set. Removed examples/custom6.cpp and reworked
- custom1.cpp to work more like simple1, which has the nice
- side benefit of implicitly demonstrating what custom6 used to.
+ default values. Removed examples/custom6.cpp, as custom1.cpp
+ can now demonstrate the same thing, implicitly.
+
+ - An SSQLS's field order no longer has to match the order of
+ fields in the result set it is populated from.
- It's now possible to use mysqlpp::String, Date, DateTime, and
- Time types in the key field positions in an SSQLS as we can
- now compare them.
+ Time types in the key field positions in an SSQLS as they
+ now support the necessary comparison interfaces.
- If you use a floating-point data type in one of the key field
positions, it no longer uses exact comparison logic. Instead,
- it now does comparisons using a threshold value defaulting
- to 0.00001. Two floating point values differing by less than
- this threshold value are considered equal. See the top of
- lib/ssqls.pl for details.
+ it now does [in]equality comparisons by testing whether the
+ difference between two floating-point values is less than a
+ configurable threshold defaulting to 0.00001.
- Removed "basic" variants of SSQLS creation macros. They've
been unofficially deprecated by dint of being all but
undocumented and unexemplified for a very long time now.
- - You can now use 'bool' type in SSQLS.
-
- - SSQLSes have always had a < operator defined for them for
- various reasons, which compares the first N fields, where N
- is the second parameter to sql_create_X. Earlier versions
- of MySQL++ did comparisons using exact equality for all data
- types including floating-point. Now there is a configurable
- value at the top of lib/custom.pl that lets you set the
- minimum threshold between two floating point values such
- that they will be considered equal. It's also possible to
- redefine this threshold on a per-module basis by #defining
- MYSQLPP_FP_MIN_DELTA before #including custom.h.
+ - You can now use 'bool' type in an SSQLS.
o You can now use mysqlpp::null as a template query parameter to
get a SQL null.
@@ -82,25 +69,21 @@
renamed the result to String, and deleted the const_string
class. It'd be a complete std::string replacement -- with
SQL-related enhancements -- if it were modifiable, but MySQL++
- doesn't need it to be modifiable, so it's still the closest
- thing MySQL++ has to its own "string type". Thus the name.
+ doesn't need it to be modifiable. Yet, it's still the closest
+ thing MySQL++ has to its own string type; thus the name.
- Replaced its internal buffer management with a much more
clever reference counted scheme. This shows its greatest
- advantage in the return from Row::operator[]() and such,
- which for technical reasons must still return by value, not
- by reference as is more common for this operator. Because it
- uses reference counting, this doesn't copy the buffer, so
- you can index into a Row to get a BLOB column and not worry
- about the additional copy it used to make.
-
- - Conversions from string form to numerics (ints, floats...)
- use a new, cleaner system by Jonathan Wakely. In code that
- wasn't abusing weaknesses in the old system, you won't see
- a difference in this new one. It just tightens up some of
- the rules and makes it easier to make changes in the future
- since we can better understand what it's doing, and we have
- more points of control for making changes.
+ advantage in the return from Row::operator[](), which for
+ technical reasons must return by value, not by reference
+ as is more common. This lets you pass around Strings by
+ value while having the efficiency of reference semantics.
+ This can be important with large return values, like BLOBs.
+
+ - Converting String to numeric types (ints, floats...) uses a
+ new, cleaner system by Jonathan Wakely. Unless you were
+ abusing weaknesses in the old system, you won't see a
+ difference. It's just more robust and flexible.
o Redesigned SQLString:
@@ -132,13 +115,13 @@
does the Standard C++ Library.
- Added mysqlpp::tiny_int interfaces to STA to replace the
- former char interfaces for those using one-byte integers.
+ former char interfaces for those needing one-byte integers.
o As a result of the ColData -> String redesign, removed
- Row::raw_*(). Before String copies were efficient, this was
- helpful in accessing BLOB data. It was doubly helpful before
- String dealt correctly with embedded null characters, but that
- reason is gone now, too.
+ Row::raw_*(). Before String copies were efficient, this
+ was helpful in accessing BLOB data efficiently. It was also
+ required back when ColData didn't deal correctly with embedded
+ null characters, but that reason is gone now, too.
o Row::operator[](const char*) no longer unconditionally throws the
BadFieldName exception when you ask for a field that doesn't
@@ -339,6 +322,44 @@
o Removed Connection::api_version(). It does the same thing as
client_version().
+ o Lots of changes to Date, DateTime, and Time classes:
+
+ - If you use the default constructor for DateTime and don't
+ subsequently set its year, month, day, hour, minute or second
+ data members to nonzero values, it becomes the SQL function
+ "NOW()" in a query string. You can also use DateTime::now()
+ as syntactic sugar for this.
+
+ - As a result of above, had to hide all of DateTime's data
+ members behind accessor functions, to keep the state of the
+ object consistent. (If it's initialized as "now" and you
+ give it an explicit year value, say, it is no longer "now",
+ so the setter has to clear the now-flag.) There are getters
+ and setters for year, month, day, hour, minute and second,
+ all named after the member.
+
+ - Did the same for Date and Time for consistency, even though it
+ isn't technically required.
+
+ - The sql_timestamp typedef now aliases DateTime instead of Time.
+
+ - Renamed template class DTbase<T> to Comparable<T>. The fact
+ that it's the common base class of all date and time classes
+ is irrelevant; making subclasses comparable is what it does,
+ so that's what it should be named after.
+
+ - Added a DateTime ctor taking discrete year, month, day, hour,
+ minute, and second values.
+
+ - Implicit conversion from stringish types to the date and time
+ types is no longer allowed. This is part of the "Waba"
+ Null<T> patch mentioned above; allowing implicit conversions
+ would break this new feature.
+
+ - Added operator std::string and str() methods to all of these
+ classes. Adding this to the existing operator << support, you
+ now have several ways to convert these objects to string form.
+
o Parameterized tiny_int class on the value type so you can
get both signed and unsigned TINYINTs
@@ -346,22 +367,6 @@
mysqlpp::tiny_int<VT> instead of raw chars
o Added sql_*text typedefs for things like MEDIUMTEXT
-
- o Changed sql_timestamp typedef to be for DateTime instead of Time.
-
- o If you use the default constructor for DateTime and don't
- subsequently set its year, month, day, hour, minute or second
- data members to nonzero values, it becomes the SQL function
- "NOW()" in a query string. You can also use DateTime::now()
- as syntactic sugar for this.
-
- o Added a DateTime ctor taking discrete year, month, day, hour,
- minute, and second values.
-
- o The Date, DateTime and Time classes can still be initialized
- from stringish types, but to make the Null<T> SSQLS support
- mentioned above work, implicit conversions are no longer allowed.
- Thanks for the basic concept of this patch go to "Waba."
o Added copy ctor and assignment operator to Row.
_______________________________________________
Mysqlpp-commits mailing list
[email protected]
https://mail.gna.org/listinfo/mysqlpp-commits