diff options
Diffstat (limited to 'src/sql')
-rw-r--r-- | src/sql/doc/qtsql.qdocconf | 12 | ||||
-rw-r--r-- | src/sql/doc/src/sql-driver.qdoc | 2 | ||||
-rw-r--r-- | src/sql/doc/src/sql-programming.qdoc | 6 | ||||
-rw-r--r-- | src/sql/drivers/mysql/qsql_mysql.cpp | 1 | ||||
-rw-r--r-- | src/sql/drivers/odbc/qsql_odbc.cpp | 27 | ||||
-rw-r--r-- | src/sql/drivers/psql/qsql_psql.cpp | 38 | ||||
-rw-r--r-- | src/sql/drivers/sqlite/qsql_sqlite.cpp | 1 | ||||
-rw-r--r-- | src/sql/kernel/qsql.qdoc | 3 | ||||
-rw-r--r-- | src/sql/kernel/qsqldriver.cpp | 1 | ||||
-rw-r--r-- | src/sql/kernel/qsqlresult.cpp | 2 | ||||
-rw-r--r-- | src/sql/models/qsqlrelationaldelegate.cpp | 6 | ||||
-rw-r--r-- | src/sql/models/qsqlrelationaltablemodel.cpp | 1 |
12 files changed, 51 insertions, 49 deletions
diff --git a/src/sql/doc/qtsql.qdocconf b/src/sql/doc/qtsql.qdocconf index 4de56207f6..6c5af37de8 100644 --- a/src/sql/doc/qtsql.qdocconf +++ b/src/sql/doc/qtsql.qdocconf @@ -3,25 +3,25 @@ include($QT_INSTALL_DOCS/global/qt-module-defaults.qdocconf) project = QtSql description = Qt SQL Reference Documentation url = http://qt-project.org/doc/qtsql -version = 5.0.0 +version = 5.0.1 examplesinstallpath = sql qhp.projects = QtSql qhp.QtSql.file = qtsql.qhp -qhp.QtSql.namespace = org.qt-project.qtsql.500 +qhp.QtSql.namespace = org.qt-project.qtsql.501 qhp.QtSql.virtualFolder = qtsql qhp.QtSql.indexTitle = Qt SQL qhp.QtSql.indexRoot = -qhp.QtSql.filterAttributes = qtsql 5.0.0 qtrefdoc -qhp.QtSql.customFilters.Qt.name = QtSql 5.0.0 -qhp.QtSql.customFilters.Qt.filterAttributes = qtsql 5.0.0 +qhp.QtSql.filterAttributes = qtsql 5.0.1 qtrefdoc +qhp.QtSql.customFilters.Qt.name = QtSql 5.0.1 +qhp.QtSql.customFilters.Qt.filterAttributes = qtsql 5.0.1 qhp.QtSql.subprojects = classes qhp.QtSql.subprojects.classes.title = C++ Classes -qhp.QtSql.subprojects.classes.indexTitle = Qt SQL C++ Classes +qhp.QtSql.subprojects.classes.indexTitle = Qt SQL Module C++ Classes qhp.QtSql.subprojects.classes.selectors = class fake:headerfile qhp.QtSql.subprojects.classes.sortPages = true tagfile = ../../../doc/qtsql/qtsql.tags diff --git a/src/sql/doc/src/sql-driver.qdoc b/src/sql/doc/src/sql-driver.qdoc index 57efa5c4cc..d8a468222b 100644 --- a/src/sql/doc/src/sql-driver.qdoc +++ b/src/sql/doc/src/sql-driver.qdoc @@ -494,7 +494,7 @@ \snippet code/doc_src_sql-driver.qdoc 15 Users of MinGW may wish to consult the following online document: - \l{PostgreSQL MinGW/Native Windows}. + \l{http://www.postgresql.org/docs/current/static/installation-platform-notes.html#INSTALLATION-NOTES-MINGW}{PostgreSQL MinGW/Native Windows}. \b{Note:} This database plugin is not supported for Windows CE. diff --git a/src/sql/doc/src/sql-programming.qdoc b/src/sql/doc/src/sql-programming.qdoc index aa2eb243b8..ab8eee5b88 100644 --- a/src/sql/doc/src/sql-programming.qdoc +++ b/src/sql/doc/src/sql-programming.qdoc @@ -76,7 +76,7 @@ \section2 Driver Layer - This comprises the classes QSqlDriver, QSqlDriverCreator<T>, + This comprises the classes QSqlDriver, QSqlDriverCreator, QSqlDriverCreatorBase, QSqlDriverPlugin, and QSqlResult. This layer provides the low-level bridge between the specific databases @@ -98,8 +98,8 @@ These classes are designed to work with Qt's \l{Model/View Programming}{model/view framework}. - Note that to use any of these classes, a QCoreApplication object - must have been instantiated first. + Note that a QCoreApplication object must be instantiated before + using any of these classes. */ /*! diff --git a/src/sql/drivers/mysql/qsql_mysql.cpp b/src/sql/drivers/mysql/qsql_mysql.cpp index e7b86cec42..80c3087bf1 100644 --- a/src/sql/drivers/mysql/qsql_mysql.cpp +++ b/src/sql/drivers/mysql/qsql_mysql.cpp @@ -1175,6 +1175,7 @@ bool QMYSQLDriver::hasFeature(DriverFeature f) const case SimpleLocking: case EventNotifications: case FinishQuery: + case CancelQuery: return false; case QuerySize: case BLOB: diff --git a/src/sql/drivers/odbc/qsql_odbc.cpp b/src/sql/drivers/odbc/qsql_odbc.cpp index 0eb078b0e4..c14e2d68c4 100644 --- a/src/sql/drivers/odbc/qsql_odbc.cpp +++ b/src/sql/drivers/odbc/qsql_odbc.cpp @@ -85,7 +85,7 @@ inline static QString fromSQLTCHAR(const QVarLengthArray<SQLTCHAR>& input, int s result=QString::fromUcs4((const uint *)input.constData(), realsize); break; default: - qCritical("sizeof(SQLTCHAR) is %d. Don't know how to handle this.", sizeof(SQLTCHAR)); + qCritical("sizeof(SQLTCHAR) is %d. Don't know how to handle this.", int(sizeof(SQLTCHAR))); } return result; } @@ -105,7 +105,7 @@ inline static QVarLengthArray<SQLTCHAR> toSQLTCHAR(const QString &input) memcpy(result.data(), input.toUcs4().data(), input.size() * 4); break; default: - qCritical("sizeof(SQLTCHAR) is %d. Don't know how to handle this.", sizeof(SQLTCHAR)); + qCritical("sizeof(SQLTCHAR) is %d. Don't know how to handle this.", int(sizeof(SQLTCHAR))); } result.append(0); // make sure it's null terminated, doesn't matter if it already is, it does if it isn't. return result; @@ -646,7 +646,7 @@ static QSqlField qMakeFieldInfo(const QODBCPrivate* p, int i ) return f; } -static int qGetODBCVersion(const QString &connOpts) +static size_t qGetODBCVersion(const QString &connOpts) { if (connOpts.contains(QLatin1String("SQL_ATTR_ODBC_VERSION=SQL_OV_ODBC3"), Qt::CaseInsensitive)) return SQL_OV_ODBC3; @@ -703,13 +703,13 @@ bool QODBCDriverPrivate::setConnectionOptions(const QString& connOpts) qWarning() << "QODBCDriver::open: Unknown option value '" << val << '\''; continue; } - r = SQLSetConnectAttr(hDbc, SQL_ATTR_ACCESS_MODE, (SQLPOINTER) v, 0); + r = SQLSetConnectAttr(hDbc, SQL_ATTR_ACCESS_MODE, (SQLPOINTER) size_t(v), 0); } else if (opt.toUpper() == QLatin1String("SQL_ATTR_CONNECTION_TIMEOUT")) { v = val.toUInt(); - r = SQLSetConnectAttr(hDbc, SQL_ATTR_CONNECTION_TIMEOUT, (SQLPOINTER) v, 0); + r = SQLSetConnectAttr(hDbc, SQL_ATTR_CONNECTION_TIMEOUT, (SQLPOINTER) size_t(v), 0); } else if (opt.toUpper() == QLatin1String("SQL_ATTR_LOGIN_TIMEOUT")) { v = val.toUInt(); - r = SQLSetConnectAttr(hDbc, SQL_ATTR_LOGIN_TIMEOUT, (SQLPOINTER) v, 0); + r = SQLSetConnectAttr(hDbc, SQL_ATTR_LOGIN_TIMEOUT, (SQLPOINTER) size_t(v), 0); } else if (opt.toUpper() == QLatin1String("SQL_ATTR_CURRENT_CATALOG")) { val.utf16(); // 0 terminate r = SQLSetConnectAttr(hDbc, SQL_ATTR_CURRENT_CATALOG, @@ -728,10 +728,10 @@ bool QODBCDriverPrivate::setConnectionOptions(const QString& connOpts) qWarning() << "QODBCDriver::open: Unknown option value '" << val << '\''; continue; } - r = SQLSetConnectAttr(hDbc, SQL_ATTR_METADATA_ID, (SQLPOINTER) v, 0); + r = SQLSetConnectAttr(hDbc, SQL_ATTR_METADATA_ID, (SQLPOINTER) size_t(v), 0); } else if (opt.toUpper() == QLatin1String("SQL_ATTR_PACKET_SIZE")) { v = val.toUInt(); - r = SQLSetConnectAttr(hDbc, SQL_ATTR_PACKET_SIZE, (SQLPOINTER) v, 0); + r = SQLSetConnectAttr(hDbc, SQL_ATTR_PACKET_SIZE, (SQLPOINTER) size_t(v), 0); } else if (opt.toUpper() == QLatin1String("SQL_ATTR_TRACEFILE")) { val.utf16(); // 0 terminate r = SQLSetConnectAttr(hDbc, SQL_ATTR_TRACEFILE, @@ -750,7 +750,7 @@ bool QODBCDriverPrivate::setConnectionOptions(const QString& connOpts) qWarning() << "QODBCDriver::open: Unknown option value '" << val << '\''; continue; } - r = SQLSetConnectAttr(hDbc, SQL_ATTR_TRACE, (SQLPOINTER) v, 0); + r = SQLSetConnectAttr(hDbc, SQL_ATTR_TRACE, (SQLPOINTER) size_t(v), 0); } else if (opt.toUpper() == QLatin1String("SQL_ATTR_CONNECTION_POOLING")) { if (val == QLatin1String("SQL_CP_OFF")) v = SQL_CP_OFF; @@ -764,7 +764,7 @@ bool QODBCDriverPrivate::setConnectionOptions(const QString& connOpts) qWarning() << "QODBCDriver::open: Unknown option value '" << val << '\''; continue; } - r = SQLSetConnectAttr(hDbc, SQL_ATTR_CONNECTION_POOLING, (SQLPOINTER)v, 0); + r = SQLSetConnectAttr(hDbc, SQL_ATTR_CONNECTION_POOLING, (SQLPOINTER) size_t(v), 0); } else if (opt.toUpper() == QLatin1String("SQL_ATTR_CP_MATCH")) { if (val.toUpper() == QLatin1String("SQL_CP_STRICT_MATCH")) v = SQL_CP_STRICT_MATCH; @@ -776,7 +776,7 @@ bool QODBCDriverPrivate::setConnectionOptions(const QString& connOpts) qWarning() << "QODBCDriver::open: Unknown option value '" << val << '\''; continue; } - r = SQLSetConnectAttr(hDbc, SQL_ATTR_CP_MATCH, (SQLPOINTER)v, 0); + r = SQLSetConnectAttr(hDbc, SQL_ATTR_CP_MATCH, (SQLPOINTER) size_t(v), 0); } else if (opt.toUpper() == QLatin1String("SQL_ATTR_ODBC_VERSION")) { // Already handled in QODBCDriver::open() continue; @@ -1801,6 +1801,7 @@ bool QODBCDriver::hasFeature(DriverFeature f) const case BatchOperations: case SimpleLocking: case EventNotifications: + case CancelQuery: return false; case MultipleResultSets: return d->hasMultiResultSets; @@ -2171,7 +2172,7 @@ bool QODBCDriver::beginTransaction() SQLUINTEGER ac(SQL_AUTOCOMMIT_OFF); SQLRETURN r = SQLSetConnectAttr(d->hDbc, SQL_ATTR_AUTOCOMMIT, - (SQLPOINTER)ac, + (SQLPOINTER)size_t(ac), sizeof(ac)); if (r != SQL_SUCCESS) { setLastError(qMakeError(tr("Unable to disable autocommit"), @@ -2220,7 +2221,7 @@ bool QODBCDriver::endTrans() SQLUINTEGER ac(SQL_AUTOCOMMIT_ON); SQLRETURN r = SQLSetConnectAttr(d->hDbc, SQL_ATTR_AUTOCOMMIT, - (SQLPOINTER)ac, + (SQLPOINTER)size_t(ac), sizeof(ac)); if (r != SQL_SUCCESS) { setLastError(qMakeError(tr("Unable to enable autocommit"), QSqlError::TransactionError, d)); diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp index 8a0e2b86ea..b66af49de6 100644 --- a/src/sql/drivers/psql/qsql_psql.cpp +++ b/src/sql/drivers/psql/qsql_psql.cpp @@ -695,25 +695,30 @@ QPSQLDriver::Protocol QPSQLDriverPrivate::getPSQLVersion() int vMaj = rx.cap(1).toInt(); int vMin = rx.cap(2).toInt(); serverVersion = qMakePSQLVersion(vMaj, vMin); -#ifdef PG_MAJORVERSION - if (rx.indexIn(QLatin1String(PG_MAJORVERSION)) != -1) { +#if defined(PG_MAJORVERSION) + if (rx.indexIn(QLatin1String(PG_MAJORVERSION)) != -1) +#elif defined(PG_VERSION) + if (rx.indexIn(QLatin1String(PG_VERSION)) != -1) +#else + if (0) +#endif + { vMaj = rx.cap(1).toInt(); vMin = rx.cap(2).toInt(); + QPSQLDriver::Protocol clientVersion = qMakePSQLVersion(vMaj, vMin); + + if (serverVersion >= QPSQLDriver::Version9 && clientVersion < QPSQLDriver::Version9) { + //Client version before QPSQLDriver::Version9 only supports escape mode for bytea type, + //but bytea format is set to hex by default in PSQL 9 and above. So need to force the + //server use the old escape mode when connects to the new server with old client library. + result = exec("SET bytea_output=escape; "); + status = PQresultStatus(result); + } else if (serverVersion == QPSQLDriver::VersionUnknown) { + serverVersion = clientVersion; + if (serverVersion != QPSQLDriver::VersionUnknown) + qWarning("The server version of this PostgreSQL is unknown, falling back to the client version."); + } } - QPSQLDriver::Protocol clientVersion = qMakePSQLVersion(vMaj, vMin); - - if (serverVersion >= QPSQLDriver::Version9 && clientVersion < QPSQLDriver::Version9) { - //Client version before QPSQLDriver::Version9 only supports escape mode for bytea type, - //but bytea format is set to hex by default in PSQL 9 and above. So need to force the - //server use the old escape mode when connects to the new server with old client library. - result = exec("SET bytea_output=escape; "); - status = PQresultStatus(result); - } else if (serverVersion == QPSQLDriver::VersionUnknown) { - serverVersion = clientVersion; - if (serverVersion != QPSQLDriver::VersionUnknown) - qWarning("The server version of this PostgreSQL is unknown, falling back to the client version."); - } -#endif } } PQclear(result); @@ -781,6 +786,7 @@ bool QPSQLDriver::hasFeature(DriverFeature f) const case SimpleLocking: case FinishQuery: case MultipleResultSets: + case CancelQuery: return false; case BLOB: return d->pro >= QPSQLDriver::Version71; diff --git a/src/sql/drivers/sqlite/qsql_sqlite.cpp b/src/sql/drivers/sqlite/qsql_sqlite.cpp index 595ef496ec..a0ccde96d4 100644 --- a/src/sql/drivers/sqlite/qsql_sqlite.cpp +++ b/src/sql/drivers/sqlite/qsql_sqlite.cpp @@ -540,6 +540,7 @@ bool QSQLiteDriver::hasFeature(DriverFeature f) const case BatchOperations: case EventNotifications: case MultipleResultSets: + case CancelQuery: return false; } return false; diff --git a/src/sql/kernel/qsql.qdoc b/src/sql/kernel/qsql.qdoc index b3afe82245..de7ea76181 100644 --- a/src/sql/kernel/qsql.qdoc +++ b/src/sql/kernel/qsql.qdoc @@ -45,9 +45,6 @@ \value BeforeFirstRow Before the first record. \value AfterLastRow After the last record. - \omitvalue BeforeFirst - \omitvalue AfterLast - \sa QSqlQuery::at() */ diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp index 62ec4e7e1f..841c563973 100644 --- a/src/sql/kernel/qsqldriver.cpp +++ b/src/sql/kernel/qsqldriver.cpp @@ -218,6 +218,7 @@ bool QSqlDriver::isOpenError() const \value EventNotifications Whether the driver supports database event notifications. \value FinishQuery Whether the driver can do any low-level resource cleanup when QSqlQuery::finish() is called. \value MultipleResultSets Whether the driver can access multiple result sets returned from batched statements or stored procedures. + \value CancelQuery Whether the driver allows cancelling a running query. More information about supported features can be found in the \l{sql-driver.html}{Qt SQL driver} documentation. diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp index 0396e127ec..1259360dd4 100644 --- a/src/sql/kernel/qsqlresult.cpp +++ b/src/sql/kernel/qsqlresult.cpp @@ -162,8 +162,6 @@ QString QSqlResultPrivate::positionalToNamedBinding() for (int i = 0; i < n; ++i) { QChar ch = sql.at(i); if (ch == QLatin1Char('?') && !inQuote) { - // Update the holder position since we are changing the holder name lengths - holders[count].holderPos = result.size(); result += qFieldSerial(count++); } else { if (ch == QLatin1Char('\'')) diff --git a/src/sql/models/qsqlrelationaldelegate.cpp b/src/sql/models/qsqlrelationaldelegate.cpp index af50c03b2d..e040789fa6 100644 --- a/src/sql/models/qsqlrelationaldelegate.cpp +++ b/src/sql/models/qsqlrelationaldelegate.cpp @@ -45,6 +45,7 @@ QT_BEGIN_NAMESPACE /*! \class QSqlRelationalDelegate + \inmodule QtSql \brief The QSqlRelationalDelegate class provides a delegate that is used to display and edit data from a QSqlRelationalTableModel. @@ -88,11 +89,6 @@ QT_BEGIN_NAMESPACE */ /*! - \fn void QSqlRelationalDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const - \reimp -*/ - -/*! \fn void QSqlRelationalDelegate::setModelData(QWidget *editor, QAbstractItemModel *model, const QModelIndex &index) const \reimp diff --git a/src/sql/models/qsqlrelationaltablemodel.cpp b/src/sql/models/qsqlrelationaltablemodel.cpp index c3637f0db7..29a70391b1 100644 --- a/src/sql/models/qsqlrelationaltablemodel.cpp +++ b/src/sql/models/qsqlrelationaltablemodel.cpp @@ -67,6 +67,7 @@ typedef QSqlRelationalTableModelSql Sql; /*! \class QSqlRelation + \inmodule QtSql \brief The QSqlRelation class stores information about an SQL foreign key. QSqlRelation is a helper class for QSqlRelationalTableModel. See |