diff options
author | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-02-18 16:14:52 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2013-02-18 16:14:52 +0100 |
commit | f4900d340a4c620b56871995741696d28e53c167 (patch) | |
tree | 66d4ed6e4e8012e8a534717e87bf15cf8a992652 /src/sql/drivers | |
parent | 7c33ae6a7bbbd42ce70acf77aa55c1bc2a23c8ec (diff) | |
parent | 843de37bca944110fdf3aab161d680e3845d2dd2 (diff) |
Merge remote-tracking branch 'origin/stable' into dev
Conflicts:
src/widgets/styles/qmacstyle_mac.mm
Change-Id: If8326db9e7da3cbf45dbf7475fdff9915c7723b1
Diffstat (limited to 'src/sql/drivers')
-rw-r--r-- | src/sql/drivers/db2/qsql_db2.cpp | 2 | ||||
-rw-r--r-- | src/sql/drivers/psql/qsql_psql.cpp | 27 |
2 files changed, 4 insertions, 25 deletions
diff --git a/src/sql/drivers/db2/qsql_db2.cpp b/src/sql/drivers/db2/qsql_db2.cpp index 537f77a8a3..9406861d4c 100644 --- a/src/sql/drivers/db2/qsql_db2.cpp +++ b/src/sql/drivers/db2/qsql_db2.cpp @@ -1030,7 +1030,7 @@ QVariant QDB2Result::data(int field) v = new QVariant(qGetIntData(d->hStmt, field, isNull)); break; case QSql::LowPrecisionInt64: - v = new QVariant(qGetBigIntData(d->hStmt, field, isNull)); + v = new QVariant((qint64) qGetBigIntData(d->hStmt, field, isNull)); break; case QSql::LowPrecisionDouble: v = new QVariant(qGetDoubleData(d->hStmt, field, isNull)); diff --git a/src/sql/drivers/psql/qsql_psql.cpp b/src/sql/drivers/psql/qsql_psql.cpp index 1d96e9f93b..0eadceb1d1 100644 --- a/src/sql/drivers/psql/qsql_psql.cpp +++ b/src/sql/drivers/psql/qsql_psql.cpp @@ -53,6 +53,7 @@ #include <qsocketnotifier.h> #include <qstringlist.h> #include <qmutex.h> +#include <QtSql/private/qsqlresult_p.h> #include <libpq-fe.h> #include <pg_config.h> @@ -183,6 +184,7 @@ class QPSQLResultPrivate { public: QPSQLResultPrivate(QPSQLResult *qq): q(qq), driver(0), result(0), currentSize(-1), preparedQueriesEnabled(false) {} + static QString fieldSerial(int i) { return QLatin1Char('$') + QString::number(i + 1); } QPSQLResult *q; const QPSQLDriverPrivate *driver; @@ -515,29 +517,6 @@ void QPSQLResult::virtual_hook(int id, void *data) QSqlResult::virtual_hook(id, data); } -static QString qReplacePlaceholderMarkers(const QString &query) -{ - const int originalLength = query.length(); - bool inQuote = false; - int markerIdx = 0; - QString result; - result.reserve(originalLength + 23); - for (int i = 0; i < originalLength; ++i) { - const QChar ch = query.at(i); - if (ch == QLatin1Char('?') && !inQuote) { - result += QLatin1Char('$'); - result += QString::number(++markerIdx); - } else { - if (ch == QLatin1Char('\'')) - inQuote = !inQuote; - result += ch; - } - } - - result.squeeze(); - return result; -} - static QString qCreateParamString(const QVector<QVariant> boundValues, const QSqlDriver *driver) { if (boundValues.isEmpty()) @@ -581,7 +560,7 @@ bool QPSQLResult::prepare(const QString &query) qDeallocatePreparedStmt(d); const QString stmtId = qMakePreparedStmtId(); - const QString stmt = QString::fromLatin1("PREPARE %1 AS ").arg(stmtId).append(qReplacePlaceholderMarkers(query)); + const QString stmt = QString::fromLatin1("PREPARE %1 AS ").arg(stmtId).append(QSqlResultPrivate::positionalToNamedBinding(query, QPSQLResultPrivate::fieldSerial)); PGresult *result = d->driver->exec(stmt); |