QSqlTableModel::selectRow(): fix failure on uncached rows
authorMark Brand <mabrand@mabrand.nl>
Mon, 17 Sep 2012 12:22:29 +0000 (14:22 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Mon, 24 Sep 2012 19:27:51 +0000 (21:27 +0200)
commit7389c096379d63d956a023835646af1179ac6ea4
tree2032bebc9aa51b69fe0025e295c0168eb59be52b
parentcb2d87e8b862c99dcbd12c399da3ac5ec9c5dcad
QSqlTableModel::selectRow(): fix failure on uncached rows

This method was originally intended for refreshing rows after
submitting changes. It should also work for refreshing rows
that are unchanged (i.e., not cached), but did not because
constructing the primary values depended on the cache. As a
consequence, the WHERE clause for the query was not created.

Fixed by deriving primary values for uncached rows from the
query record. Note that the cache is still authoritative for rows
it holds. This is important because the prmary values there may
differ from the original query record due to changes to columns
of the primary key.

Includes new test.

Change-Id: I41cca2cbf26019d4b495ffa6d876e2b55ec57803
Reviewed-by: Andy Shaw <andy.shaw@digia.com>
Reviewed-by: Mark Brand <mabrand@mabrand.nl>
src/sql/models/qsqltablemodel.cpp
src/sql/models/qsqltablemodel_p.h
tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp