summaryrefslogtreecommitdiffstats
path: root/src/sql/kernel
diff options
context:
space:
mode:
authorChristian Ehrlicher <ch.ehrlicher@gmx.de>2023-01-07 14:11:51 +0100
committerMarc Mutz <marc.mutz@qt.io>2023-01-20 13:16:35 +0000
commite04af5b9ea60f17787e4cf81cfe1b79a69be3406 (patch)
treeba59adba322f13af3e6247a2dc5a7ea2543d71c8 /src/sql/kernel
parent8d5ff757744c35e9c96d379ef5600cfbfaab609a (diff)
SQL: use qsizetype and range-based for loops where possible
Some public functions are still using int instead qsizetype which can't be changed until Qt7. Change-Id: Ib6f210c344acce9f3836e8a5493a741eb8b2b385 Reviewed-by: Marc Mutz <marc.mutz@qt.io>
Diffstat (limited to 'src/sql/kernel')
-rw-r--r--src/sql/kernel/qsqlcachedresult.cpp2
-rw-r--r--src/sql/kernel/qsqldatabase.cpp17
-rw-r--r--src/sql/kernel/qsqldriver.cpp26
-rw-r--r--src/sql/kernel/qsqlquery.cpp6
-rw-r--r--src/sql/kernel/qsqlresult.cpp38
-rw-r--r--src/sql/kernel/qsqlresult_p.h6
6 files changed, 45 insertions, 50 deletions
diff --git a/src/sql/kernel/qsqlcachedresult.cpp b/src/sql/kernel/qsqlcachedresult.cpp
index 477cf6da11..3cc0b6419a 100644
--- a/src/sql/kernel/qsqlcachedresult.cpp
+++ b/src/sql/kernel/qsqlcachedresult.cpp
@@ -20,7 +20,7 @@ QT_BEGIN_NAMESPACE
to indicate that we are not interested in the actual values.
*/
-static const uint initial_cache_size = 128;
+static constexpr qsizetype initial_cache_size = 128;
void QSqlCachedResultPrivate::cleanup()
{
diff --git a/src/sql/kernel/qsqldatabase.cpp b/src/sql/kernel/qsqldatabase.cpp
index ee8ebcb8c7..8e896314eb 100644
--- a/src/sql/kernel/qsqldatabase.cpp
+++ b/src/sql/kernel/qsqldatabase.cpp
@@ -499,19 +499,18 @@ QStringList QSqlDatabase::drivers()
if (QFactoryLoader *fl = loader()) {
typedef QMultiMap<int, QString> PluginKeyMap;
- typedef PluginKeyMap::const_iterator PluginKeyMapConstIterator;
const PluginKeyMap keyMap = fl->keyMap();
- const PluginKeyMapConstIterator cend = keyMap.constEnd();
- for (PluginKeyMapConstIterator it = keyMap.constBegin(); it != cend; ++it)
- if (!list.contains(it.value()))
- list << it.value();
+ for (const QString &val : keyMap) {
+ if (!list.contains(val))
+ list << val;
+ }
}
- DriverDict dict = QSqlDatabasePrivate::driverDict();
- for (DriverDict::const_iterator i = dict.constBegin(); i != dict.constEnd(); ++i) {
- if (!list.contains(i.key()))
- list << i.key();
+ const DriverDict dict = QSqlDatabasePrivate::driverDict();
+ for (const auto &[k, _] : dict.asKeyValueRange()) {
+ if (!list.contains(k))
+ list << k;
}
return list;
diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp
index 6102aece24..f30fcfd349 100644
--- a/src/sql/kernel/qsqldriver.cpp
+++ b/src/sql/kernel/qsqldriver.cpp
@@ -8,6 +8,7 @@
#include "qsqlfield.h"
#include "qsqlindex.h"
#include "private/qsqldriver_p.h"
+#include "private/qtools_p.h"
#include <limits.h>
@@ -445,12 +446,11 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
{
const auto tableNameString = tableName.isEmpty() ? QString()
: prepareIdentifier(tableName, QSqlDriver::TableName, this);
- int i;
QString s;
s.reserve(128);
switch (type) {
case SelectStatement:
- for (i = 0; i < rec.count(); ++i) {
+ for (qsizetype i = 0; i < rec.count(); ++i) {
if (rec.isGenerated(i))
s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(", "_L1);
}
@@ -463,7 +463,7 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
{
const QString tableNamePrefix = tableNameString.isEmpty()
? QString() : tableNameString + u'.';
- for (int i = 0; i < rec.count(); ++i) {
+ for (qsizetype i = 0; i < rec.count(); ++i) {
if (!rec.isGenerated(i))
continue;
s.append(s.isEmpty() ? "WHERE "_L1 : " AND "_L1);
@@ -480,7 +480,7 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
}
case UpdateStatement:
s = s + "UPDATE "_L1 + tableNameString + " SET "_L1;
- for (i = 0; i < rec.count(); ++i) {
+ for (qsizetype i = 0; i < rec.count(); ++i) {
if (!rec.isGenerated(i))
continue;
s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(u'=');
@@ -501,7 +501,7 @@ QString QSqlDriver::sqlStatement(StatementType type, const QString &tableName,
case InsertStatement: {
s = s + "INSERT INTO "_L1 + tableNameString + " ("_L1;
QString vals;
- for (i = 0; i < rec.count(); ++i) {
+ for (qsizetype i = 0; i < rec.count(); ++i) {
if (!rec.isGenerated(i))
continue;
s.append(prepareIdentifier(rec.fieldName(i), QSqlDriver::FieldName, this)).append(", "_L1);
@@ -612,15 +612,15 @@ QString QSqlDriver::formatValue(const QSqlField &field, bool trimStrings) const
break;
case QMetaType::QByteArray : {
if (hasFeature(BLOB)) {
- QByteArray ba = field.value().toByteArray();
- QString res;
- static const char hexchars[] = "0123456789abcdef";
- for (int i = 0; i < ba.size(); ++i) {
- uchar s = (uchar) ba[i];
- res += QLatin1Char(hexchars[s >> 4]);
- res += QLatin1Char(hexchars[s & 0x0f]);
+ const QByteArray ba = field.value().toByteArray();
+ r.reserve((ba.size() + 1) * 2);
+ r += u'\'';
+ for (const char c : ba) {
+ const uchar s = uchar(c);
+ r += QLatin1Char(QtMiscUtils::toHexLower(s >> 4));
+ r += QLatin1Char(QtMiscUtils::toHexLower(s & 0x0f));
}
- r = u'\'' + res + u'\'';
+ r += u'\'';
break;
}
}
diff --git a/src/sql/kernel/qsqlquery.cpp b/src/sql/kernel/qsqlquery.cpp
index d729dbda6b..14a3dc4130 100644
--- a/src/sql/kernel/qsqlquery.cpp
+++ b/src/sql/kernel/qsqlquery.cpp
@@ -336,7 +336,7 @@ bool QSqlQuery::isNull(int field) const
bool QSqlQuery::isNull(const QString &name) const
{
- int index = d->sqlResult->record().indexOf(name);
+ qsizetype index = d->sqlResult->record().indexOf(name);
if (index > -1)
return isNull(index);
qWarning("QSqlQuery::isNull: unknown field name '%s'", qPrintable(name));
@@ -447,7 +447,7 @@ QVariant QSqlQuery::value(int index) const
QVariant QSqlQuery::value(const QString& name) const
{
- int index = d->sqlResult->record().indexOf(name);
+ qsizetype index = d->sqlResult->record().indexOf(name);
if (index > -1)
return value(index);
qWarning("QSqlQuery::value: unknown field name '%s'", qPrintable(name));
@@ -920,7 +920,7 @@ QSqlRecord QSqlQuery::record() const
QSqlRecord rec = d->sqlResult->record();
if (isValid()) {
- for (int i = 0; i < rec.count(); ++i)
+ for (qsizetype i = 0; i < rec.count(); ++i)
rec.setValue(i, value(i));
}
return rec;
diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp
index d283e1212e..c1d8ec31f4 100644
--- a/src/sql/kernel/qsqlresult.cpp
+++ b/src/sql/kernel/qsqlresult.cpp
@@ -23,7 +23,7 @@ QString QSqlResultPrivate::holderAt(int index) const
return holders.size() > index ? holders.at(index).holderName : fieldSerial(index);
}
-QString QSqlResultPrivate::fieldSerial(int i) const
+QString QSqlResultPrivate::fieldSerial(qsizetype i) const
{
return QString(":%1"_L1).arg(i);
}
@@ -37,15 +37,15 @@ static bool qIsAlnum(QChar ch)
QString QSqlResultPrivate::positionalToNamedBinding(const QString &query) const
{
- int n = query.size();
+ const qsizetype n = query.size();
QString result;
result.reserve(n * 5 / 4);
QChar closingQuote;
- int count = 0;
+ qsizetype count = 0;
bool ignoreBraces = (sqldriver->dbmsType() == QSqlDriver::PostgreSQL);
- for (int i = 0; i < n; ++i) {
+ for (qsizetype i = 0; i < n; ++i) {
QChar ch = query.at(i);
if (!closingQuote.isNull()) {
if (ch == closingQuote) {
@@ -84,13 +84,13 @@ QString QSqlResultPrivate::namedToPositionalBinding(const QString &query)
query.trimmed().startsWith("EXECUTE BLOCK"_L1, Qt::CaseInsensitive))
return query;
- int n = query.size();
+ const qsizetype n = query.size();
QString result;
result.reserve(n);
QChar closingQuote;
int count = 0;
- int i = 0;
+ qsizetype i = 0;
bool ignoreBraces = (sqldriver->dbmsType() == QSqlDriver::PostgreSQL);
while (i < n) {
@@ -624,12 +624,9 @@ bool QSqlResult::exec()
// fake preparation - just replace the placeholders..
QString query = lastQuery();
if (d->binds == NamedBinding) {
- int i;
- QVariant val;
- QString holder;
- for (i = d->holders.size() - 1; i >= 0; --i) {
- holder = d->holders.at(i).holderName;
- val = d->values.value(d->indexes.value(holder).value(0,-1));
+ for (qsizetype i = d->holders.size() - 1; i >= 0; --i) {
+ const QString &holder = d->holders.at(i).holderName;
+ const QVariant val = d->values.value(d->indexes.value(holder).value(0,-1));
QSqlField f(""_L1, val.metaType());
if (QSqlResultPrivate::isVariantNull(val))
f.setValue(QVariant());
@@ -639,21 +636,18 @@ bool QSqlResult::exec()
holder.size(), driver()->formatValue(f));
}
} else {
- QString val;
qsizetype i = 0;
- int idx = 0;
- for (idx = 0; idx < d->values.size(); ++idx) {
+ for (const QVariant &var : std::as_const(d->values)) {
i = query.indexOf(u'?', i);
if (i == -1)
continue;
- QVariant var = d->values.value(idx);
QSqlField f(""_L1, var.metaType());
if (QSqlResultPrivate::isVariantNull(var))
f.clear();
else
f.setValue(var);
- val = driver()->formatValue(f);
- query = query.replace(i, 1, driver()->formatValue(f));
+ const QString val = driver()->formatValue(f);
+ query = query.replace(i, 1, val);
i += val.size();
}
}
@@ -945,11 +939,13 @@ bool QSqlResult::execBatch(bool arrayBind)
Q_UNUSED(arrayBind);
Q_D(QSqlResult);
- QList<QVariant> values = d->values;
+ const QList<QVariant> values = d->values;
if (values.size() == 0)
return false;
- for (int i = 0; i < values.at(0).toList().size(); ++i) {
- for (int j = 0; j < values.size(); ++j)
+ const qsizetype batchCount = values.at(0).toList().size();
+ const qsizetype valueCount = values.size();
+ for (qsizetype i = 0; i < batchCount; ++i) {
+ for (qsizetype j = 0; j < valueCount; ++j)
bindValue(j, values.at(j).toList().at(i), QSql::In);
if (!exec())
return false;
diff --git a/src/sql/kernel/qsqlresult_p.h b/src/sql/kernel/qsqlresult_p.h
index 7e84283b4f..1e8e8a3033 100644
--- a/src/sql/kernel/qsqlresult_p.h
+++ b/src/sql/kernel/qsqlresult_p.h
@@ -30,11 +30,11 @@ QT_BEGIN_NAMESPACE
inline Class##Private* drv_d_func() { return !sqldriver ? nullptr : reinterpret_cast<Class *>(static_cast<QSqlDriver*>(sqldriver))->d_func(); }
struct QHolder {
- QHolder(const QString &hldr = QString(), int index = -1): holderName(hldr), holderPos(index) { }
+ QHolder(const QString &hldr = QString(), qsizetype index = -1): holderName(hldr), holderPos(index) { }
bool operator==(const QHolder &h) const { return h.holderPos == holderPos && h.holderName == holderName; }
bool operator!=(const QHolder &h) const { return h.holderPos != holderPos || h.holderName != holderName; }
QString holderName;
- int holderPos;
+ qsizetype holderPos;
};
class Q_SQL_EXPORT QSqlResultPrivate
@@ -72,7 +72,7 @@ public:
clearIndex();
}
- virtual QString fieldSerial(int) const;
+ virtual QString fieldSerial(qsizetype) const;
QString positionalToNamedBinding(const QString &query) const;
QString namedToPositionalBinding(const QString &query);
QString holderAt(int index) const;