Rick Gutleber wrote:
>
> It's the latter. I'll submit it as a separate patch later. Of course,
> the test suite doesn't seem to call this and it's not "silent" like
> tests are supposed to be. It's more of an example. Perhaps it should
> be moved into examples and called by dtest. I think it would be a good
> addition for dtest. If so, then test/sqlstream.cpp should be moved too.
> Let me know what you think if you'd like me to make any changes.
Let's just keep on the same path, get the patch(es) into a functional
state, and I can then think about refactoring or moving files around
then. I'll be able to make a better decision when I have all the pieces
in front of me.
>> stock_vector.push_back(stock(strings[0], strings[1]...);
>
> I didn't do this because it won't take that line without casts for at
> least some of those arguments
Probably just stock.sdate. It's easy to fix: just wrap it in Date().
> I would have expected implicit casts to
> kick in since the arguments are of type mysqlpp::String. Am I missing
> something?
We had implicit conversion from stringish types to Date, DateTime and
Time in v2, but it conflicted with the SSQLS extensions in v3.
With the SSQLS stuff in place, even the most innocent code would end up
causing an ambiguous conversion error. I never did analyze it fully,
but I believe it's due to the fact that with String and SQLTypeAdapter
each offering the compiler so many conversion options and so many
MySQL++ classes taking or returning these types, it's easy to end up
giving the compiler all the rope it needs to hang itself, allowing
conversion from anything to anything. C++ can't cope with that, due to
the compile-time predictability requirements of its static type system.
If you want to see it yourself, remove the 'explicit' from the ctors in
these classes, then watch MySQL++ blow up. Er, I mean, asplode.
We may restore these implicit conversion ctors in v4, if SSQLS v2 fixes
the core problem, but for now, we have to live with it.