diff options
author | Sergio Ahumada <sergio.ahumada@digia.com> | 2013-04-10 15:41:47 +0200 |
---|---|---|
committer | Sergio Ahumada <sergio.ahumada@digia.com> | 2013-04-10 15:42:22 +0200 |
commit | 90297a64f203959f90041887ea31f4bd04bc059a (patch) | |
tree | 86f8ad6a5af26fd618cdb2e20601e6df89ac94d6 /src/sql/drivers/mysql | |
parent | 537a4bc4011d32de193dc31caf09a44c1810ab33 (diff) | |
parent | f273d6fbc02055ff3999adc0df76360ca0670435 (diff) |
Merge branch 'stable' into dev
Change-Id: Icff019d74ae04c628a80f66aa478e4db40fae464
Diffstat (limited to 'src/sql/drivers/mysql')
-rw-r--r-- | src/sql/drivers/mysql/qsql_mysql.cpp | 69 | ||||
-rw-r--r-- | src/sql/drivers/mysql/qsql_mysql_p.h | 4 |
2 files changed, 42 insertions, 31 deletions
diff --git a/src/sql/drivers/mysql/qsql_mysql.cpp b/src/sql/drivers/mysql/qsql_mysql.cpp index 871b13182f..0e20cf539e 100644 --- a/src/sql/drivers/mysql/qsql_mysql.cpp +++ b/src/sql/drivers/mysql/qsql_mysql.cpp @@ -435,8 +435,8 @@ void QMYSQLResult::cleanup() // must iterate trough leftover result sets from multi-selects or stored procedures // if this isn't done subsequent queries will fail with "Commands out of sync" #if MYSQL_VERSION_ID >= 40100 - while (d->driver && d->driver->d->mysql && mysql_next_result(d->driver->d->mysql) == 0) { - MYSQL_RES *res = mysql_store_result(d->driver->d->mysql); + while (d->driver && d->driver->d_func()->mysql && mysql_next_result(d->driver->d_func()->mysql) == 0) { + MYSQL_RES *res = mysql_store_result(d->driver->d_func()->mysql); if (res) mysql_free_result(res); } @@ -606,7 +606,7 @@ QVariant QMYSQLResult::data(int field) return QVariant(f.type); if (f.type != QVariant::ByteArray) - val = toUnicode(d->driver->d->tc, f.outField, f.bufLength); + val = toUnicode(d->driver->d_func()->tc, f.outField, f.bufLength); } else { if (d->row[field] == NULL) { // NULL value @@ -614,7 +614,7 @@ QVariant QMYSQLResult::data(int field) } fieldLength = mysql_fetch_lengths(d->result)[field]; if (f.type != QVariant::ByteArray) - val = toUnicode(d->driver->d->tc, d->row[field], fieldLength); + val = toUnicode(d->driver->d_func()->tc, d->row[field], fieldLength); } switch(f.type) { @@ -693,22 +693,22 @@ bool QMYSQLResult::reset (const QString& query) cleanup(); - const QByteArray encQuery(fromUnicode(d->driver->d->tc, query)); - if (mysql_real_query(d->driver->d->mysql, encQuery.data(), encQuery.length())) { + const QByteArray encQuery(fromUnicode(d->driver->d_func()->tc, query)); + if (mysql_real_query(d->driver->d_func()->mysql, encQuery.data(), encQuery.length())) { setLastError(qMakeError(QCoreApplication::translate("QMYSQLResult", "Unable to execute query"), - QSqlError::StatementError, d->driver->d)); + QSqlError::StatementError, d->driver->d_func())); return false; } - d->result = mysql_store_result(d->driver->d->mysql); - if (!d->result && mysql_field_count(d->driver->d->mysql) > 0) { + d->result = mysql_store_result(d->driver->d_func()->mysql); + if (!d->result && mysql_field_count(d->driver->d_func()->mysql) > 0) { setLastError(qMakeError(QCoreApplication::translate("QMYSQLResult", "Unable to store result"), - QSqlError::StatementError, d->driver->d)); + QSqlError::StatementError, d->driver->d_func())); return false; } - int numFields = mysql_field_count(d->driver->d->mysql); + int numFields = mysql_field_count(d->driver->d_func()->mysql); setSelect(numFields != 0); d->fields.resize(numFields); - d->rowsAffected = mysql_affected_rows(d->driver->d->mysql); + d->rowsAffected = mysql_affected_rows(d->driver->d_func()->mysql); if (isSelect()) { for(int i = 0; i < numFields; i++) { @@ -753,7 +753,7 @@ QVariant QMYSQLResult::lastInsertId() const return QVariant(id); #endif } else { - quint64 id = mysql_insert_id(d->driver->d->mysql); + quint64 id = mysql_insert_id(d->driver->d_func()->mysql); if (id) return QVariant(id); } @@ -773,11 +773,11 @@ QSqlRecord QMYSQLResult::record() const res = d->result; #endif - if (!mysql_errno(d->driver->d->mysql)) { + if (!mysql_errno(d->driver->d_func()->mysql)) { mysql_field_seek(res, 0); MYSQL_FIELD* field = mysql_fetch_field(res); while(field) { - info.append(qToField(field, d->driver->d->tc)); + info.append(qToField(field, d->driver->d_func()->tc)); field = mysql_fetch_field(res); } } @@ -802,26 +802,26 @@ bool QMYSQLResult::nextResult() delete[] d->fields[i].outField; d->fields.clear(); - int status = mysql_next_result(d->driver->d->mysql); + int status = mysql_next_result(d->driver->d_func()->mysql); if (status > 0) { setLastError(qMakeError(QCoreApplication::translate("QMYSQLResult", "Unable to execute next query"), - QSqlError::StatementError, d->driver->d)); + QSqlError::StatementError, d->driver->d_func())); return false; } else if (status == -1) { return false; // No more result sets } - d->result = mysql_store_result(d->driver->d->mysql); - int numFields = mysql_field_count(d->driver->d->mysql); + d->result = mysql_store_result(d->driver->d_func()->mysql); + int numFields = mysql_field_count(d->driver->d_func()->mysql); if (!d->result && numFields > 0) { setLastError(qMakeError(QCoreApplication::translate("QMYSQLResult", "Unable to store next result"), - QSqlError::StatementError, d->driver->d)); + QSqlError::StatementError, d->driver->d_func())); return false; } setSelect(numFields > 0); d->fields.resize(numFields); - d->rowsAffected = mysql_affected_rows(d->driver->d->mysql); + d->rowsAffected = mysql_affected_rows(d->driver->d_func()->mysql); if (isSelect()) { for (int i = 0; i < numFields; i++) { @@ -874,7 +874,7 @@ bool QMYSQLResult::prepare(const QString& query) return false; #if MYSQL_VERSION_ID >= 40108 cleanup(); - if (!d->driver->d->preparedQuerysEnabled) + if (!d->driver->d_func()->preparedQuerysEnabled) return QSqlResult::prepare(query); int r; @@ -883,14 +883,14 @@ bool QMYSQLResult::prepare(const QString& query) return false; if (!d->stmt) - d->stmt = mysql_stmt_init(d->driver->d->mysql); + d->stmt = mysql_stmt_init(d->driver->d_func()->mysql); if (!d->stmt) { setLastError(qMakeError(QCoreApplication::translate("QMYSQLResult", "Unable to prepare statement"), - QSqlError::StatementError, d->driver->d)); + QSqlError::StatementError, d->driver->d_func())); return false; } - const QByteArray encQuery(fromUnicode(d->driver->d->tc, query)); + const QByteArray encQuery(fromUnicode(d->driver->d_func()->tc, query)); r = mysql_stmt_prepare(d->stmt, encQuery.constData(), encQuery.length()); if (r != 0) { setLastError(qMakeStmtError(QCoreApplication::translate("QMYSQLResult", @@ -1010,7 +1010,7 @@ bool QMYSQLResult::exec() break; case QVariant::String: default: { - QByteArray ba = fromUnicode(d->driver->d->tc, val.toString()); + QByteArray ba = fromUnicode(d->driver->d_func()->tc, val.toString()); stringVector.append(ba); currBind->buffer_type = MYSQL_TYPE_STRING; currBind->buffer = const_cast<char *>(ba.constData()); @@ -1115,7 +1115,7 @@ static void qLibraryEnd() } QMYSQLDriver::QMYSQLDriver(QObject * parent) - : QSqlDriver(parent) + : QSqlDriver(*new QMYSQLDriverPrivate, parent) { init(); qLibraryInit(); @@ -1127,8 +1127,9 @@ QMYSQLDriver::QMYSQLDriver(QObject * parent) */ QMYSQLDriver::QMYSQLDriver(MYSQL * con, QObject * parent) - : QSqlDriver(parent) + : QSqlDriver(*new QMYSQLDriverPrivate, parent) { + Q_D(QMYSQLDriver); init(); if (con) { d->mysql = (MYSQL *) con; @@ -1146,7 +1147,7 @@ QMYSQLDriver::QMYSQLDriver(MYSQL * con, QObject * parent) void QMYSQLDriver::init() { - d = new QMYSQLDriverPrivate(); + Q_D(QMYSQLDriver); d->mysql = 0; qMySqlConnectionCount++; } @@ -1160,6 +1161,7 @@ QMYSQLDriver::~QMYSQLDriver() bool QMYSQLDriver::hasFeature(DriverFeature f) const { + Q_D(const QMYSQLDriver); switch (f) { case Transactions: // CLIENT_TRANSACTION should be defined in all recent mysql client libs > 3.23.34 @@ -1227,6 +1229,7 @@ bool QMYSQLDriver::open(const QString& db, int port, const QString& connOpts) { + Q_D(QMYSQLDriver); if (isOpen()) close(); @@ -1328,6 +1331,7 @@ bool QMYSQLDriver::open(const QString& db, void QMYSQLDriver::close() { + Q_D(QMYSQLDriver); if (isOpen()) { #ifndef QT_NO_THREAD mysql_thread_end(); @@ -1346,6 +1350,7 @@ QSqlResult *QMYSQLDriver::createResult() const QStringList QMYSQLDriver::tables(QSql::TableType type) const { + Q_D(const QMYSQLDriver); QStringList tl; #if MYSQL_VERSION_ID >= 40100 if( mysql_get_server_version(d->mysql) < 50000) @@ -1413,6 +1418,7 @@ QSqlIndex QMYSQLDriver::primaryIndex(const QString& tablename) const QSqlRecord QMYSQLDriver::record(const QString& tablename) const { + Q_D(const QMYSQLDriver); QString table=tablename; if(isIdentifierEscaped(table, QSqlDriver::TableName)) table = stripDelimiters(table, QSqlDriver::TableName); @@ -1434,11 +1440,13 @@ QSqlRecord QMYSQLDriver::record(const QString& tablename) const QVariant QMYSQLDriver::handle() const { + Q_D(const QMYSQLDriver); return QVariant::fromValue(d->mysql); } bool QMYSQLDriver::beginTransaction() { + Q_D(QMYSQLDriver); #ifndef CLIENT_TRANSACTIONS return false; #endif @@ -1456,6 +1464,7 @@ bool QMYSQLDriver::beginTransaction() bool QMYSQLDriver::commitTransaction() { + Q_D(QMYSQLDriver); #ifndef CLIENT_TRANSACTIONS return false; #endif @@ -1473,6 +1482,7 @@ bool QMYSQLDriver::commitTransaction() bool QMYSQLDriver::rollbackTransaction() { + Q_D(QMYSQLDriver); #ifndef CLIENT_TRANSACTIONS return false; #endif @@ -1490,6 +1500,7 @@ bool QMYSQLDriver::rollbackTransaction() QString QMYSQLDriver::formatValue(const QSqlField &field, bool trimStrings) const { + Q_D(const QMYSQLDriver); QString r; if (field.isNull()) { r = QLatin1String("NULL"); diff --git a/src/sql/drivers/mysql/qsql_mysql_p.h b/src/sql/drivers/mysql/qsql_mysql_p.h index c23bcd92d7..a1be139b2a 100644 --- a/src/sql/drivers/mysql/qsql_mysql_p.h +++ b/src/sql/drivers/mysql/qsql_mysql_p.h @@ -110,8 +110,9 @@ private: class Q_EXPORT_SQLDRIVER_MYSQL QMYSQLDriver : public QSqlDriver { - Q_OBJECT friend class QMYSQLResult; + Q_DECLARE_PRIVATE(QMYSQLDriver) + Q_OBJECT public: explicit QMYSQLDriver(QObject *parent=0); explicit QMYSQLDriver(MYSQL *con, QObject * parent=0); @@ -141,7 +142,6 @@ protected: bool rollbackTransaction(); private: void init(); - QMYSQLDriverPrivate* d; }; QT_END_NAMESPACE |