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.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.