summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIsrael Lins <israelins85@yahoo.com.br>2013-03-17 23:23:15 -0300
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-24 23:57:44 +0200
commit5500bdc4f18e2e5b056e8b274dfef389889a5d34 (patch)
tree4b7dbb5b7ece2b6e461548ceefa46927cbb4b10d
parentdd22022e1b0b1fc9538ae4374477bc2fde00cb85 (diff)
ODBC: fixed consistence of return of QODBCResult::exec()
The QODBCResult::exec() returns false when query is an delete with no data do delete caused by SQLExecute function returning SQL_NO_DATA, but the false return means error on execution. Task-number: QTBUG-10569 Change-Id: I6c7ebadcf62ab404b60c7bcccdab6a10bf16a923 Reviewed-by: Mark Brand <mabrand@mabrand.nl> (cherry-picked from qtbase commit 0646d1131b4bc65cdd9af29f4ce00fdd2398a3df) Reviewed-by: Andy Shaw <andy.shaw@digia.com>
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.cpp2
-rw-r--r--tests/auto/qsqlquery/tst_qsqlquery.cpp4
2 files changed, 5 insertions, 1 deletions
diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp
index f95f40c103..5ff8e975ee 100644
--- a/src/sql/drivers/odbc/qsql_odbc.cpp
+++ b/src/sql/drivers/odbc/qsql_odbc.cpp
@@ -1598,7 +1598,7 @@ bool QODBCResult::exec()
}
}
r = SQLExecute(d->hStmt);
- if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {
+ if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO && r != SQL_NO_DATA) {
qWarning() << "QODBCResult::exec: Unable to execute statement:" << qODBCWarn(d);
setLastError(qMakeError(QCoreApplication::translate("QODBCResult",
"Unable to execute statement"), QSqlError::StatementError, d));
diff --git a/tests/auto/qsqlquery/tst_qsqlquery.cpp b/tests/auto/qsqlquery/tst_qsqlquery.cpp
index 27c28b1f8b..bbb1a8d4b6 100644
--- a/tests/auto/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/qsqlquery/tst_qsqlquery.cpp
@@ -1030,6 +1030,10 @@ void tst_QSqlQuery::isActive()
QVERIFY_SQL( q, exec( "delete from " + qtest + " where id = 42" ) );
QVERIFY( q.isActive() );
+
+ QVERIFY_SQL( q, exec( "delete from " + qtest + " where id = 42" ) );
+
+ QVERIFY( q.isActive() );
}
void tst_QSqlQuery::numRowsAffected()