summaryrefslogtreecommitdiffstats
path: root/src/sql
diff options
context:
space:
mode:
Diffstat (limited to 'src/sql')
-rw-r--r--src/sql/drivers/ibase/qsql_ibase.cpp2
-rw-r--r--src/sql/drivers/odbc/qsql_odbc.cpp15
-rw-r--r--src/sql/drivers/psql/qsql_psql.cpp4
-rw-r--r--src/sql/drivers/sqlite2/qsql_sqlite2.cpp2
-rw-r--r--src/sql/kernel/qsqlresult.h5
-rw-r--r--src/sql/sql.pro9
6 files changed, 24 insertions, 13 deletions
diff --git a/src/sql/drivers/ibase/qsql_ibase.cpp b/src/sql/drivers/ibase/qsql_ibase.cpp
index ae48fdb90a..6fd91b6b76 100644
--- a/src/sql/drivers/ibase/qsql_ibase.cpp
+++ b/src/sql/drivers/ibase/qsql_ibase.cpp
@@ -1297,7 +1297,7 @@ int QIBaseResult::size()
if (ct == isc_info_req_select_count)
return val;
}
- //qDebug() << "size -1";
+ //qDebug("size -1");
return -1;
unsigned int i, result_size;
diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp
index 139b2a8f2b..59ef42d609 100644
--- a/src/sql/drivers/odbc/qsql_odbc.cpp
+++ b/src/sql/drivers/odbc/qsql_odbc.cpp
@@ -1931,11 +1931,14 @@ bool QODBCDriver::open(const QString & db,
if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {
qSqlWarning(QLatin1String("QODBCDriver::open: Unable to allocate connection"), d);
setOpenError(true);
+ cleanup();
return false;
}
- if (!d->setConnectionOptions(connOpts))
+ if (!d->setConnectionOptions(connOpts)) {
+ cleanup();
return false;
+ }
// Create the connection string
QString connQStr;
@@ -1968,6 +1971,7 @@ bool QODBCDriver::open(const QString & db,
if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {
setLastError(qMakeError(tr("Unable to connect"), QSqlError::ConnectionError, d));
setOpenError(true);
+ cleanup();
return false;
}
@@ -1975,6 +1979,7 @@ bool QODBCDriver::open(const QString & db,
setLastError(qMakeError(tr("Unable to connect - Driver doesn't support all "
"functionality required"), QSqlError::ConnectionError, d));
setOpenError(true);
+ cleanup();
return false;
}
@@ -2195,7 +2200,7 @@ void QODBCDriverPrivate::checkHasSQLFetchScroll()
SQLRETURN r = SQLGetFunctions(hDbc, SQL_API_SQLFETCHSCROLL, &sup);
if ((r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) || sup != SQL_TRUE) {
hasSQLFetchScroll = false;
- qWarning() << "QODBCDriver::checkHasSQLFetchScroll: Warning - Driver doesn't support scrollable result sets, use forward only mode for queries";
+ qWarning("QODBCDriver::checkHasSQLFetchScroll: Warning - Driver doesn't support scrollable result sets, use forward only mode for queries");
}
}
@@ -2244,7 +2249,7 @@ bool QODBCDriver::beginTransaction()
{
Q_D(QODBCDriver);
if (!isOpen()) {
- qWarning() << "QODBCDriver::beginTransaction: Database not open";
+ qWarning("QODBCDriver::beginTransaction: Database not open");
return false;
}
SQLUINTEGER ac(SQL_AUTOCOMMIT_OFF);
@@ -2264,7 +2269,7 @@ bool QODBCDriver::commitTransaction()
{
Q_D(QODBCDriver);
if (!isOpen()) {
- qWarning() << "QODBCDriver::commitTransaction: Database not open";
+ qWarning("QODBCDriver::commitTransaction: Database not open");
return false;
}
SQLRETURN r = SQLEndTran(SQL_HANDLE_DBC,
@@ -2282,7 +2287,7 @@ bool QODBCDriver::rollbackTransaction()
{
Q_D(QODBCDriver);
if (!isOpen()) {
- qWarning() << "QODBCDriver::rollbackTransaction: Database not open";
+ qWarning("QODBCDriver::rollbackTransaction: Database not open");
return false;
}
SQLRETURN r = SQLEndTran(SQL_HANDLE_DBC,
diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp
index b75c9ee29c..fcf75af298 100644
--- a/src/sql/drivers/psql/qsql_psql.cpp
+++ b/src/sql/drivers/psql/qsql_psql.cpp
@@ -1421,8 +1421,10 @@ bool QPSQLDriver::subscribeToNotification(const QString &name)
PGresult *result = d->exec(query);
if (PQresultStatus(result) != PGRES_COMMAND_OK) {
setLastError(qMakeError(tr("Unable to subscribe"), QSqlError::StatementError, d, result));
+ PQclear(result);
return false;
}
+ PQclear(result);
if (!d->sn) {
d->sn = new QSocketNotifier(socket, QSocketNotifier::Read);
@@ -1454,8 +1456,10 @@ bool QPSQLDriver::unsubscribeFromNotification(const QString &name)
PGresult *result = d->exec(query);
if (PQresultStatus(result) != PGRES_COMMAND_OK) {
setLastError(qMakeError(tr("Unable to unsubscribe"), QSqlError::StatementError, d, result));
+ PQclear(result);
return false;
}
+ PQclear(result);
d->seid.removeAll(name);
diff --git a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp
index 46b0a356d3..67c24e4168 100644
--- a/src/sql/drivers/sqlite2/qsql_sqlite2.cpp
+++ b/src/sql/drivers/sqlite2/qsql_sqlite2.cpp
@@ -144,8 +144,6 @@ public:
QVector<QVariant> firstRow;
};
-static const uint initial_cache_size = 128;
-
QSQLite2ResultPrivate::QSQLite2ResultPrivate(QSQLite2Result *q, const QSQLite2Driver *drv)
: QSqlCachedResultPrivate(q, drv),
currentTail(0),
diff --git a/src/sql/kernel/qsqlresult.h b/src/sql/kernel/qsqlresult.h
index ad5f615a52..c6611c925f 100644
--- a/src/sql/kernel/qsqlresult.h
+++ b/src/sql/kernel/qsqlresult.h
@@ -44,6 +44,9 @@
#include <QtCore/qvector.h>
#include <QtSql/qsql.h>
+// for testing:
+class tst_QSqlQuery;
+
QT_BEGIN_NAMESPACE
@@ -60,6 +63,8 @@ class Q_SQL_EXPORT QSqlResult
Q_DECLARE_PRIVATE(QSqlResult)
friend class QSqlQuery;
friend class QSqlTableModelPrivate;
+ // for testing:
+ friend class ::tst_QSqlQuery;
public:
virtual ~QSqlResult();
diff --git a/src/sql/sql.pro b/src/sql/sql.pro
index 10004cb445..218671d7e7 100644
--- a/src/sql/sql.pro
+++ b/src/sql/sql.pro
@@ -4,13 +4,8 @@ QT = core-private
DEFINES += QT_NO_USING_NAMESPACE
win32-msvc*|win32-icc:QMAKE_LFLAGS += /BASE:0x62000000
-MODULE_PLUGIN_TYPES = \
- sqldrivers
-
QMAKE_DOCS = $$PWD/doc/qtsql.qdocconf
-load(qt_module)
-
DEFINES += QT_NO_CAST_FROM_ASCII
PRECOMPILED_HEADER = ../corelib/global/qt_pch.h
SQL_P = sql
@@ -18,3 +13,7 @@ SQL_P = sql
include(kernel/kernel.pri)
include(drivers/drivers.pri)
include(models/models.pri)
+
+MODULE_PLUGIN_TYPES = \
+ sqldrivers
+load(qt_module)