[Development] QString behavior change
Julien Blanc
julien.blanc at nmc-company.com
Tue Aug 11 18:45:10 CEST 2015
Le mardi 11 août 2015 à 08:46 -0700, Thiago Macieira a écrit :
> On Tuesday 11 August 2015 10:38:27 Julien Blanc wrote:
> > That point is certainly valid, but i would like to raise the point that
> > string nullness is a *required* feature for QtSQL (a null QString is
> > converted to a NULL SQL, whereas a non-null empty QString is converted
>
> That's a misfeature. QtSql should have been using something like
> QOptional<QString> for a nullable string. In addition, it usually uses
> QVariant, which has its own null setting -- it allows for a null int, different
> from a value of zero.
What are the chances that such a change can be accepted ? (i mean, i can
submit such a patch, but that would mean breaking a *lot* of code).
> > So, could you consider returning StringType("") instead ? (unless i’m
> > wrong, null strings should be handled by the first condition).
>
> No.
By no, do you mean that i am wrong (ie, a null QString passing via
trimmed_helper would fail the begin == str.cbegin() && end == str.cend()
test, for a reason i don’t understand, nor does my compiler), or that
you have a good reason for not returning StringType("") ? In the latter
case, i would be very glad if you explain it.
> If you want to pass a null QString to QtSql, you can. If you want to check
> whether a string you got from QtSql is null, you can.
Please consider the following case :
if(str.isNull())
q.bind(0, QString(""));
else
q.bind(0, str.trimmed());
That code looks perfectly valid, but is in fact broken by a subtle,
counter-intuitive implementation detail.
> That has nothing to do with trimmed(). Other API doesn't guarantee to keep
> null either when mutating strings, so I don't see why we should here. If the
> API doesn't specifically deal with null QStrings, expect that it will randomly
> change between null and not null.
If nullness of QString is so much broken, then please consider removing
it at all (Qt6 ?). I will thank you for that. But until that’s done, is
it possible to not add more brokenness to it ?
Regards,
Julien
More information about the Development
mailing list