You are right I guess I removed the holderAt function after compiling.
However in order to keep compatibility for a 4.8 release, the code I wrote in QSqlResult::boundValueMap could easily be put into QSqlQuery::boundValues instead, though the function would have to be defined in qsqlresult.cpp and QSqlQuery would need to be made a friend of QSqlResultPrivate. Slightly hackish but very straightforward code, a good compromise IMO.
If that is considered too hackish or against policy, you could at least include the change to boundValueName which improves performance when using PositionalBinding.
QString QSqlResult::boundValueName(int index) const
if( d->binds == PositionalBinding )
return qFieldSerial(index); // Avoid expensive sequence scan below