List:MySQL++« Previous MessageNext Message »
From:Warren Young Date:September 4 2007 12:16pm
Subject:Re: std::vector of mysqlpp::Row
View as plain text  
Yassin wrote:
>> In MySQL++ v2.3, the Result object must outlive the Row objects that
>> come from it, but with storein(), the Result object only lasts as long
>> as the storein() call.
> Can you explain me why? 

MySQL++ is open source, and its code is pretty easy to read these days. 
Hint, hint.

If you had looked for references to Result in lib/row.cpp, you would 
have found that there are several places where calling a method on a Row 
delegates part of the function back to the Result object that created 
it.  This was done for efficiency and simplicity: why make each Row 
carry extra copies of data its parent Result holds when it can just keep 
a pointer back to its parent and ask it when it needs the info?

The new Row code in v3.0 gets around this without a huge speed and space 
penalty by using a much more complex memory management scheme.  (See 
recent posts to the list about reference counted smart pointers.)  If I 
were the original authors of MySQL++, I wouldn't have wanted to make the 
memory management complex at such an early stage of development, either. 
  It's only a sign of the increasing maturity of MySQL++ that we can do 
such things.
std::vector of mysqlpp::RowYassin30 Aug
  • Re: std::vector of mysqlpp::RowWarren Young31 Aug
    • Re: std::vector of mysqlpp::RowYassin31 Aug
      • Re: std::vector of mysqlpp::RowWarren Young4 Sep