diff options
-rw-r--r-- | src/sql/drivers/db2/qsql_db2.cpp | 14 | ||||
-rw-r--r-- | src/sql/drivers/db2/qsql_db2.h | 1 | ||||
-rw-r--r-- | src/sql/drivers/mysql/qsql_mysql.cpp | 4 | ||||
-rw-r--r-- | src/sql/drivers/oci/qsql_oci.cpp | 10 | ||||
-rw-r--r-- | src/sql/drivers/oci/qsql_oci.h | 1 | ||||
-rw-r--r-- | src/sql/drivers/odbc/qsql_odbc.cpp | 14 | ||||
-rw-r--r-- | src/sql/drivers/odbc/qsql_odbc.h | 1 | ||||
-rw-r--r-- | src/sql/drivers/sqlite/qsql_sqlite.cpp | 10 | ||||
-rw-r--r-- | src/sql/drivers/sqlite/qsql_sqlite.h | 1 | ||||
-rw-r--r-- | src/sql/drivers/sqlite2/qsql_sqlite2.cpp | 8 | ||||
-rw-r--r-- | src/sql/drivers/sqlite2/qsql_sqlite2.h | 1 | ||||
-rw-r--r-- | src/sql/kernel/qsqlcachedresult.cpp | 15 | ||||
-rw-r--r-- | src/sql/kernel/qsqlcachedresult_p.h | 2 | ||||
-rw-r--r-- | src/sql/kernel/qsqlresult.cpp | 34 | ||||
-rw-r--r-- | src/sql/kernel/qsqlresult.h | 10 |
15 files changed, 63 insertions, 63 deletions
diff --git a/src/sql/drivers/db2/qsql_db2.cpp b/src/sql/drivers/db2/qsql_db2.cpp index d5d02ff20b..8ee65fd536 100644 --- a/src/sql/drivers/db2/qsql_db2.cpp +++ b/src/sql/drivers/db2/qsql_db2.cpp @@ -1120,19 +1120,17 @@ bool QDB2Result::nextResult() void QDB2Result::virtual_hook(int id, void *data) { switch (id) { - case QSqlResult::NextResult: - Q_ASSERT(data); - *static_cast<bool*>(data) = nextResult(); - break; - case QSqlResult::DetachFromResultSet: - if (d->hStmt) - SQLCloseCursor(d->hStmt); - break; default: QSqlResult::virtual_hook(id, data); } } +void QDB2Result::detachFromResultSet() +{ + if (d->hStmt) + SQLCloseCursor(d->hStmt); +} + /************************************/ QDB2Driver::QDB2Driver(QObject* parent) diff --git a/src/sql/drivers/db2/qsql_db2.h b/src/sql/drivers/db2/qsql_db2.h index a2462a3435..cf25dee096 100644 --- a/src/sql/drivers/db2/qsql_db2.h +++ b/src/sql/drivers/db2/qsql_db2.h @@ -80,6 +80,7 @@ protected: int numRowsAffected(); QSqlRecord record() const; void virtual_hook(int id, void *data); + void detachFromResultSet(); bool nextResult(); private: diff --git a/src/sql/drivers/mysql/qsql_mysql.cpp b/src/sql/drivers/mysql/qsql_mysql.cpp index 9bd1de1851..84648ae815 100644 --- a/src/sql/drivers/mysql/qsql_mysql.cpp +++ b/src/sql/drivers/mysql/qsql_mysql.cpp @@ -839,10 +839,6 @@ bool QMYSQLResult::nextResult() void QMYSQLResult::virtual_hook(int id, void *data) { switch (id) { - case QSqlResult::NextResult: - Q_ASSERT(data); - *static_cast<bool*>(data) = nextResult(); - break; default: QSqlResult::virtual_hook(id, data); } diff --git a/src/sql/drivers/oci/qsql_oci.cpp b/src/sql/drivers/oci/qsql_oci.cpp index 1e001f77b2..02eda36c9a 100644 --- a/src/sql/drivers/oci/qsql_oci.cpp +++ b/src/sql/drivers/oci/qsql_oci.cpp @@ -2042,14 +2042,18 @@ QVariant QOCIResult::lastInsertId() const return QVariant(); } +bool QOCIResult::execBatch(bool arrayBind) +{ + QOCICols::execBatch(d, boundValues(), arrayBind); + d->resetBindCount(); + return d->error.type() == QSqlError::NoError; +} + void QOCIResult::virtual_hook(int id, void *data) { Q_ASSERT(data); switch (id) { - case QSqlResult::BatchOperation: - QOCICols::execBatch(d, boundValues(), *reinterpret_cast<bool *>(data)); - break; default: QSqlCachedResult::virtual_hook(id, data); } diff --git a/src/sql/drivers/oci/qsql_oci.h b/src/sql/drivers/oci/qsql_oci.h index 9e97c84a7f..42a7c860ad 100644 --- a/src/sql/drivers/oci/qsql_oci.h +++ b/src/sql/drivers/oci/qsql_oci.h @@ -83,6 +83,7 @@ protected: int numRowsAffected(); QSqlRecord record() const; QVariant lastInsertId() const; + bool execBatch(bool arrayBind = false); void virtual_hook(int id, void *data); private: diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp index 04bc0cc894..05f740cb41 100644 --- a/src/sql/drivers/odbc/qsql_odbc.cpp +++ b/src/sql/drivers/odbc/qsql_odbc.cpp @@ -1710,19 +1710,17 @@ bool QODBCResult::nextResult() void QODBCResult::virtual_hook(int id, void *data) { switch (id) { - case QSqlResult::DetachFromResultSet: - if (d->hStmt) - SQLCloseCursor(d->hStmt); - break; - case QSqlResult::NextResult: - Q_ASSERT(data); - *static_cast<bool*>(data) = nextResult(); - break; default: QSqlResult::virtual_hook(id, data); } } +void QODBCResult::detachFromResultSet() +{ + if (d->hStmt) + SQLCloseCursor(d->hStmt); +} + void QODBCResult::setForwardOnly(bool forward) { d->userForwardOnly = forward; diff --git a/src/sql/drivers/odbc/qsql_odbc.h b/src/sql/drivers/odbc/qsql_odbc.h index a89ce0f9b3..6ae65a0805 100644 --- a/src/sql/drivers/odbc/qsql_odbc.h +++ b/src/sql/drivers/odbc/qsql_odbc.h @@ -104,6 +104,7 @@ protected: int numRowsAffected(); QSqlRecord record() const; void virtual_hook(int id, void *data); + void detachFromResultSet(); bool nextResult(); private: diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp index 168500e5a8..bfd08c9750 100644 --- a/src/sql/drivers/sqlite/qsql_sqlite.cpp +++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp @@ -334,10 +334,6 @@ QSQLiteResult::~QSQLiteResult() void QSQLiteResult::virtual_hook(int id, void *data) { switch (id) { - case QSqlResult::DetachFromResultSet: - if (d->stmt) - sqlite3_reset(d->stmt); - break; default: QSqlCachedResult::virtual_hook(id, data); } @@ -495,6 +491,12 @@ QSqlRecord QSQLiteResult::record() const return d->rInf; } +void QSQLiteResult::detachFromResultSet() +{ + if (d->stmt) + sqlite3_reset(d->stmt); +} + QVariant QSQLiteResult::handle() const { return QVariant::fromValue(d->stmt); diff --git a/src/sql/drivers/sqlite/qsql_sqlite.h b/src/sql/drivers/sqlite/qsql_sqlite.h index 8232be0ebc..0af6f6392f 100644 --- a/src/sql/drivers/sqlite/qsql_sqlite.h +++ b/src/sql/drivers/sqlite/qsql_sqlite.h @@ -79,6 +79,7 @@ protected: int numRowsAffected(); QVariant lastInsertId() const; QSqlRecord record() const; + void detachFromResultSet(); void virtual_hook(int id, void *data); private: diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp index 53876404c0..70dd178497 100644 --- a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp +++ b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp @@ -267,9 +267,6 @@ QSQLite2Result::~QSQLite2Result() void QSQLite2Result::virtual_hook(int id, void *data) { switch (id) { - case QSqlResult::DetachFromResultSet: - d->finalize(); - break; default: QSqlCachedResult::virtual_hook(id, data); } @@ -343,6 +340,11 @@ QSqlRecord QSQLite2Result::record() const return d->rInf; } +void QSQLite2Result::detachFromResultSet() +{ + d->finalize(); +} + QVariant QSQLite2Result::handle() const { return QVariant::fromValue(d->currentMachine); diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2.h b/src/sql/drivers/sqlite2/qsql_sqlite2.h index 4df870f3ae..83961ec371 100644 --- a/src/sql/drivers/sqlite2/qsql_sqlite2.h +++ b/src/sql/drivers/sqlite2/qsql_sqlite2.h @@ -77,6 +77,7 @@ protected: int size(); int numRowsAffected(); QSqlRecord record() const; + void detachFromResultSet(); void virtual_hook(int id, void *data); private: diff --git a/src/sql/kernel/qsqlcachedresult.cpp b/src/sql/kernel/qsqlcachedresult.cpp index 1971a2935d..38d9525c92 100644 --- a/src/sql/kernel/qsqlcachedresult.cpp +++ b/src/sql/kernel/qsqlcachedresult.cpp @@ -305,14 +305,21 @@ QSqlCachedResult::ValueCache &QSqlCachedResult::cache() void QSqlCachedResult::virtual_hook(int id, void *data) { switch (id) { - case QSqlResult::DetachFromResultSet: - case QSqlResult::SetNumericalPrecision: - cleanup(); - break; default: QSqlResult::virtual_hook(id, data); } } +void QSqlCachedResult::detachFromResultSet() +{ + cleanup(); +} + +void QSqlCachedResult::setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy policy) +{ + QSqlResult::setNumericalPrecisionPolicy(policy); + cleanup(); +} + QT_END_NAMESPACE diff --git a/src/sql/kernel/qsqlcachedresult_p.h b/src/sql/kernel/qsqlcachedresult_p.h index 9feaa54999..1fcd62b44f 100644 --- a/src/sql/kernel/qsqlcachedresult_p.h +++ b/src/sql/kernel/qsqlcachedresult_p.h @@ -90,6 +90,8 @@ protected: ValueCache &cache(); void virtual_hook(int id, void *data); + void detachFromResultSet(); + void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy policy); private: bool cacheNext(); QSqlCachedResultPrivate *d; diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp index 03e227bffc..2abcf85786 100644 --- a/src/sql/kernel/qsqlresult.cpp +++ b/src/sql/kernel/qsqlresult.cpp @@ -961,32 +961,24 @@ void QSqlResult::virtual_hook(int, void *) */ bool QSqlResult::execBatch(bool arrayBind) { - if (driver()->hasFeature(QSqlDriver::BatchOperations)) { - virtual_hook(BatchOperation, &arrayBind); - d->resetBindCount(); - return d->error.type() == QSqlError::NoError; - } else { - QVector<QVariant> values = d->values; - if (values.count() == 0) + Q_UNUSED(arrayBind); + + QVector<QVariant> values = d->values; + if (values.count() == 0) + return false; + for (int i = 0; i < values.at(0).toList().count(); ++i) { + for (int j = 0; j < values.count(); ++j) + bindValue(j, values.at(j).toList().at(i), QSql::In); + if (!exec()) return false; - for (int i = 0; i < values.at(0).toList().count(); ++i) { - for (int j = 0; j < values.count(); ++j) - bindValue(j, values.at(j).toList().at(i), QSql::In); - if (!exec()) - return false; - } - return true; } - return false; + return true; } /*! \internal */ void QSqlResult::detachFromResultSet() { - if (driver()->hasFeature(QSqlDriver::FinishQuery) - || driver()->hasFeature(QSqlDriver::SimpleLocking)) - virtual_hook(DetachFromResultSet, 0); } /*! \internal @@ -994,7 +986,6 @@ void QSqlResult::detachFromResultSet() void QSqlResult::setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy policy) { d->precisionPolicy = policy; - virtual_hook(SetNumericalPrecision, &policy); } /*! \internal @@ -1008,11 +999,6 @@ QSql::NumericalPrecisionPolicy QSqlResult::numericalPrecisionPolicy() const */ bool QSqlResult::nextResult() { - if (driver()->hasFeature(QSqlDriver::MultipleResultSets)) { - bool result = false; - virtual_hook(NextResult, &result); - return result; - } return false; } diff --git a/src/sql/kernel/qsqlresult.h b/src/sql/kernel/qsqlresult.h index 162451c6dd..9c4213f363 100644 --- a/src/sql/kernel/qsqlresult.h +++ b/src/sql/kernel/qsqlresult.h @@ -125,13 +125,13 @@ protected: virtual QSqlRecord record() const; virtual QVariant lastInsertId() const; - enum VirtualHookOperation { BatchOperation, DetachFromResultSet, SetNumericalPrecision, NextResult }; + enum VirtualHookOperation { }; virtual void virtual_hook(int id, void *data); - bool execBatch(bool arrayBind = false); - void detachFromResultSet(); - void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy policy); + virtual bool execBatch(bool arrayBind = false); + virtual void detachFromResultSet(); + virtual void setNumericalPrecisionPolicy(QSql::NumericalPrecisionPolicy policy); QSql::NumericalPrecisionPolicy numericalPrecisionPolicy() const; - bool nextResult(); + virtual bool nextResult(); private: QSqlResultPrivate* d; |