--- a/src/sql/models/qsqlquerymodel.cpp Tue Jan 26 12:42:25 2010 +0200
+++ b/src/sql/models/qsqlquerymodel.cpp Tue Feb 02 00:43:10 2010 +0200
@@ -314,6 +314,7 @@
QSqlRecord newRec = query.record();
bool columnsChanged = (newRec != d->rec);
bool hasQuerySize = query.driver()->hasFeature(QSqlDriver::QuerySize);
+ bool hasNewData = (newRec != QSqlRecord()) || !query.lastError().isValid();
if (d->colOffsets.size() != newRec.count() || columnsChanged)
d->initColOffsets(newRec.count());
@@ -328,13 +329,13 @@
d->error = QSqlError();
d->query = query;
d->rec = newRec;
-
+
if (mustClearModel)
endRemoveRows();
-
- d->atEnd = false;
- if (columnsChanged)
+ d->atEnd = false;
+
+ if (columnsChanged && hasNewData)
reset();
if (!query.isActive() || query.isForwardOnly()) {
@@ -417,7 +418,7 @@
const QVariant &value, int role)
{
Q_D(QSqlQueryModel);
- if (orientation != Qt::Horizontal || section < 0)
+ if (orientation != Qt::Horizontal || section < 0 || columnCount() <= section)
return false;
if (d->headers.size() <= section)