summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/sql/masterdetail/dialog.cpp14
-rw-r--r--src/plugins/sqldrivers/db2/qsql_db2.cpp12
-rw-r--r--src/plugins/sqldrivers/mysql/qsql_mysql.cpp30
-rw-r--r--src/plugins/sqldrivers/odbc/qsql_odbc.cpp58
-rw-r--r--src/plugins/sqldrivers/psql/qsql_psql.cpp10
-rw-r--r--src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp2
-rw-r--r--src/sql/kernel/qsqldriver.cpp2
-rw-r--r--src/sql/kernel/qsqlfield.cpp79
-rw-r--r--src/sql/kernel/qsqlfield.h27
-rw-r--r--src/sql/kernel/qsqlresult.cpp4
-rw-r--r--tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp66
-rw-r--r--tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp60
-rw-r--r--tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp90
-rw-r--r--tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp6
-rw-r--r--tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp28
-rw-r--r--tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp6
16 files changed, 277 insertions, 217 deletions
diff --git a/examples/sql/masterdetail/dialog.cpp b/examples/sql/masterdetail/dialog.cpp
index 3267352b07..7777929dfd 100644
--- a/examples/sql/masterdetail/dialog.cpp
+++ b/examples/sql/masterdetail/dialog.cpp
@@ -117,9 +117,9 @@ int Dialog::addNewArtist(const QString &name)
int id = generateArtistId();
- QSqlField f1("id", QVariant::Int);
- QSqlField f2("artist", QVariant::String);
- QSqlField f3("albumcount", QVariant::Int);
+ QSqlField f1("id", QMetaType(QMetaType::Int));
+ QSqlField f2("artist", QMetaType(QMetaType::QString));
+ QSqlField f3("albumcount", QMetaType(QMetaType::Int));
f1.setValue(QVariant(id));
f2.setValue(QVariant(name));
@@ -137,10 +137,10 @@ int Dialog::addNewAlbum(const QString &title, int artistId)
int id = generateAlbumId();
QSqlRecord record;
- QSqlField f1("albumid", QVariant::Int);
- QSqlField f2("title", QVariant::String);
- QSqlField f3("artistid", QVariant::Int);
- QSqlField f4("year", QVariant::Int);
+ QSqlField f1("albumid", QMetaType(QMetaType::Int));
+ QSqlField f2("title", QMetaType(QMetaType::QString));
+ QSqlField f3("artistid", QMetaType(QMetaType::Int));
+ QSqlField f4("year", QMetaType(QMetaType::Int));
f1.setValue(QVariant(id));
f2.setValue(QVariant(title));
diff --git a/src/plugins/sqldrivers/db2/qsql_db2.cpp b/src/plugins/sqldrivers/db2/qsql_db2.cpp
index 02cb15348b..e644a556e6 100644
--- a/src/plugins/sqldrivers/db2/qsql_db2.cpp
+++ b/src/plugins/sqldrivers/db2/qsql_db2.cpp
@@ -702,7 +702,7 @@ bool QDB2Result::exec()
if (bindValueType(i) & QSql::Out)
values[i].detach();
- switch (values.at(i).type()) {
+ switch (values.at(i).metaType().id()) {
case QVariant::Date: {
QByteArray ba;
ba.resize(sizeof(DATE_STRUCT));
@@ -894,7 +894,7 @@ bool QDB2Result::exec()
return true;
for (i = 0; i < values.count(); ++i) {
- switch (values[i].type()) {
+ switch (values[i].metaType().id()) {
case QVariant::Date: {
DATE_STRUCT ds = *((DATE_STRUCT *)tmpStorage.takeFirst().constData());
values[i] = QVariant(QDate(ds.year, ds.month, ds.day));
@@ -921,7 +921,7 @@ bool QDB2Result::exec()
break; }
}
if (indicators[i] == SQL_NULL_DATA)
- values[i] = QVariant(values[i].type());
+ values[i] = QVariant(values[i].metaType());
}
return true;
}
@@ -1053,7 +1053,7 @@ QVariant QDB2Result::data(int field)
QVariant* v = 0;
- switch (info.type()) {
+ switch (info.metaType().id()) {
case QVariant::LongLong:
v = new QVariant((qint64) qGetBigIntData(d->hStmt, field, isNull));
break;
@@ -1135,7 +1135,7 @@ QVariant QDB2Result::data(int field)
break;
}
if (isNull)
- *v = QVariant(info.type());
+ *v = QVariant(info.metaType());
d->valueCache[field] = v;
return *v;
}
@@ -1687,7 +1687,7 @@ QString QDB2Driver::formatValue(const QSqlField &field, bool trimStrings) const
if (field.isNull())
return QLatin1String("NULL");
- switch (field.type()) {
+ switch (field.metaType().id()) {
case QVariant::DateTime: {
// Use an escape sequence for the datetime fields
if (field.value().toDateTime().isValid()) {
diff --git a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
index 93c9a4841f..733e949a98 100644
--- a/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
+++ b/src/plugins/sqldrivers/mysql/qsql_mysql.cpp
@@ -173,7 +173,7 @@ public:
{
char *outField = nullptr;
MYSQL_FIELD *myField = nullptr;
- QMetaType::Type type = QMetaType::UnknownType;
+ QMetaType type = QMetaType();
my_bool nullIndicator = false;
ulong bufLength = 0ul;
};
@@ -201,7 +201,7 @@ static QSqlError qMakeError(const QString& err, QSqlError::ErrorType type,
}
-static QMetaType::Type qDecodeMYSQLType(int mysqltype, uint flags)
+static QMetaType qDecodeMYSQLType(int mysqltype, uint flags)
{
QMetaType::Type type;
switch (mysqltype) {
@@ -256,13 +256,13 @@ static QMetaType::Type qDecodeMYSQLType(int mysqltype, uint flags)
type = QMetaType::QString;
break;
}
- return type;
+ return QMetaType(type);
}
static QSqlField qToField(MYSQL_FIELD *field)
{
QSqlField f(QString::fromUtf8(field->name),
- QVariant::Type(qDecodeMYSQLType(int(field->type), field->flags)),
+ qDecodeMYSQLType(int(field->type), field->flags),
QString::fromUtf8(field->table));
f.setRequired(IS_NOT_NULL(field->flags));
f.setLength(field->length);
@@ -344,7 +344,7 @@ bool QMYSQLResultPrivate::bindInValues()
// after mysql_stmt_exec() in QMYSQLResult::exec()
fieldInfo->length = 0;
hasBlobs = true;
- } else if (qIsInteger(f.type)) {
+ } else if (qIsInteger(f.type.id())) {
fieldInfo->length = 8;
} else {
fieldInfo->type = MYSQL_TYPE_STRING;
@@ -541,33 +541,33 @@ QVariant QMYSQLResult::data(int field)
QString val;
if (d->preparedQuery) {
if (f.nullIndicator)
- return QVariant(QVariant::Type(f.type));
+ return QVariant(f.type);
- if (qIsInteger(f.type)) {
- QVariant variant(QMetaType(f.type), f.outField);
+ if (qIsInteger(f.type.id())) {
+ QVariant variant(f.type, f.outField);
// we never want to return char variants here, see QTBUG-53397
- if (static_cast<int>(f.type) == QMetaType::UChar)
+ if (f.type.id() == QMetaType::UChar)
return variant.toUInt();
- else if (static_cast<int>(f.type) == QMetaType::Char)
+ else if (f.type.id() == QMetaType::Char)
return variant.toInt();
return variant;
}
- if (f.type != QMetaType::QByteArray)
+ if (f.type.id() != QMetaType::QByteArray)
val = QString::fromUtf8(f.outField, f.bufLength);
} else {
if (d->row[field] == NULL) {
// NULL value
- return QVariant(QVariant::Type(f.type));
+ return QVariant(f.type);
}
fieldLength = mysql_fetch_lengths(d->result)[field];
- if (f.type != QMetaType::QByteArray)
+ if (f.type.id() != QMetaType::QByteArray)
val = QString::fromUtf8(d->row[field], fieldLength);
}
- switch (static_cast<int>(f.type)) {
+ switch (f.type.id()) {
case QMetaType::LongLong:
return QVariant(val.toLongLong());
case QMetaType::ULongLong:
@@ -1447,7 +1447,7 @@ QString QMYSQLDriver::formatValue(const QSqlField &field, bool trimStrings) cons
if (field.isNull()) {
r = QStringLiteral("NULL");
} else {
- switch (+field.type()) {
+ switch (field.metaType().id()) {
case QMetaType::Double:
r = QString::number(field.value().toDouble(), 'g', field.precision());
break;
diff --git a/src/plugins/sqldrivers/odbc/qsql_odbc.cpp b/src/plugins/sqldrivers/odbc/qsql_odbc.cpp
index ffd8b5dc6e..a58c782b60 100644
--- a/src/plugins/sqldrivers/odbc/qsql_odbc.cpp
+++ b/src/plugins/sqldrivers/odbc/qsql_odbc.cpp
@@ -341,49 +341,49 @@ static QSqlError qMakeError(const QString& err, QSqlError::ErrorType type,
nativeCode != -1 ? QString::number(nativeCode) : QString());
}
-static QVariant::Type qDecodeODBCType(SQLSMALLINT sqltype, bool isSigned = true)
+static QMetaType qDecodeODBCType(SQLSMALLINT sqltype, bool isSigned = true)
{
- QVariant::Type type = QVariant::Invalid;
+ int type = QMetaType::UnknownType;
switch (sqltype) {
case SQL_DECIMAL:
case SQL_NUMERIC:
case SQL_REAL:
case SQL_FLOAT:
case SQL_DOUBLE:
- type = QVariant::Double;
+ type = QMetaType::Double;
break;
case SQL_SMALLINT:
case SQL_INTEGER:
case SQL_BIT:
- type = isSigned ? QVariant::Int : QVariant::UInt;
+ type = isSigned ? QMetaType::Int : QMetaType::UInt;
break;
case SQL_TINYINT:
- type = QVariant::UInt;
+ type = QMetaType::UInt;
break;
case SQL_BIGINT:
- type = isSigned ? QVariant::LongLong : QVariant::ULongLong;
+ type = isSigned ? QMetaType::LongLong : QMetaType::ULongLong;
break;
case SQL_BINARY:
case SQL_VARBINARY:
case SQL_LONGVARBINARY:
- type = QVariant::ByteArray;
+ type = QMetaType::QByteArray;
break;
case SQL_DATE:
case SQL_TYPE_DATE:
- type = QVariant::Date;
+ type = QMetaType::QDate;
break;
case SQL_TIME:
case SQL_TYPE_TIME:
- type = QVariant::Time;
+ type = QMetaType::QTime;
break;
case SQL_TIMESTAMP:
case SQL_TYPE_TIMESTAMP:
- type = QVariant::DateTime;
+ type = QMetaType::QDateTime;
break;
case SQL_WCHAR:
case SQL_WVARCHAR:
case SQL_WLONGVARCHAR:
- type = QVariant::String;
+ type = QMetaType::QString;
break;
case SQL_CHAR:
case SQL_VARCHAR:
@@ -391,13 +391,13 @@ static QVariant::Type qDecodeODBCType(SQLSMALLINT sqltype, bool isSigned = true)
case SQL_GUID:
#endif
case SQL_LONGVARCHAR:
- type = QVariant::String;
+ type = QMetaType::QString;
break;
default:
- type = QVariant::ByteArray;
+ type = QMetaType::QByteArray;
break;
}
- return type;
+ return QMetaType(type);
}
static QString qGetStringData(SQLHANDLE hStmt, int column, int colSize, bool unicode = false)
@@ -554,7 +554,7 @@ static QVariant qGetBinaryData(SQLHANDLE hStmt, int column)
if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO)
break;
if (lengthIndicator == SQL_NULL_DATA)
- return QVariant(QVariant::ByteArray);
+ return QVariant(QMetaType(QVariant::ByteArray));
if (lengthIndicator > SQLLEN(colSize) || lengthIndicator == SQL_NO_TOTAL) {
read += colSize;
colSize = 65536;
@@ -581,9 +581,9 @@ static QVariant qGetIntData(SQLHANDLE hStmt, int column, bool isSigned = true)
sizeof(intbuf),
&lengthIndicator);
if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO)
- return QVariant(QVariant::Invalid);
+ return QVariant();
if (lengthIndicator == SQL_NULL_DATA)
- return QVariant(QVariant::Int);
+ return QVariant(QMetaType::fromType<int>());
if (isSigned)
return int(intbuf);
else
@@ -601,10 +601,10 @@ static QVariant qGetDoubleData(SQLHANDLE hStmt, int column)
0,
&lengthIndicator);
if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO) {
- return QVariant(QVariant::Invalid);
+ return QVariant();
}
if(lengthIndicator == SQL_NULL_DATA)
- return QVariant(QVariant::Double);
+ return QVariant(QMetaType::fromType<double>());
return (double) dblbuf;
}
@@ -621,9 +621,9 @@ static QVariant qGetBigIntData(SQLHANDLE hStmt, int column, bool isSigned = true
sizeof(lngbuf),
&lengthIndicator);
if (r != SQL_SUCCESS && r != SQL_SUCCESS_WITH_INFO)
- return QVariant(QVariant::Invalid);
+ return QVariant();
if (lengthIndicator == SQL_NULL_DATA)
- return QVariant(QVariant::LongLong);
+ return QVariant(QMetaType::fromType<qlonglong>());
if (isSigned)
return qint64(lngbuf);
@@ -717,7 +717,7 @@ static QSqlField qMakeFieldInfo(const SQLHANDLE hStmt, int i, QString *errorMess
const QString qColName(fromSQLTCHAR(colName, colNameLen));
// nullable can be SQL_NO_NULLS, SQL_NULLABLE or SQL_NULLABLE_UNKNOWN
- QVariant::Type type = qDecodeODBCType(colType, unsignedFlag == SQL_FALSE);
+ QMetaType type = qDecodeODBCType(colType, unsignedFlag == SQL_FALSE);
QSqlField f(qColName, type);
f.setSqlType(colType);
f.setLength(colSize == 0 ? -1 : int(colSize));
@@ -1212,7 +1212,7 @@ QVariant QODBCResult::data(int field)
// some servers do not support fetching column n after we already
// fetched column n+1, so cache all previous columns here
const QSqlField info = d->rInf.field(i);
- switch (info.type()) {
+ switch (info.metaType().id()) {
case QVariant::LongLong:
d->fieldCache[i] = qGetBigIntData(d->hStmt, i);
break;
@@ -1236,7 +1236,7 @@ QVariant QODBCResult::data(int field)
if ((r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) && (lengthIndicator != SQL_NULL_DATA))
d->fieldCache[i] = QVariant(QDate(dbuf.year, dbuf.month, dbuf.day));
else
- d->fieldCache[i] = QVariant(QVariant::Date);
+ d->fieldCache[i] = QVariant(QMetaType::fromType<QDate>());
break;
case QVariant::Time:
TIME_STRUCT tbuf;
@@ -1249,7 +1249,7 @@ QVariant QODBCResult::data(int field)
if ((r == SQL_SUCCESS || r == SQL_SUCCESS_WITH_INFO) && (lengthIndicator != SQL_NULL_DATA))
d->fieldCache[i] = QVariant(QTime(tbuf.hour, tbuf.minute, tbuf.second));
else
- d->fieldCache[i] = QVariant(QVariant::Time);
+ d->fieldCache[i] = QVariant(QMetaType::fromType<QTime>());
break;
case QVariant::DateTime:
TIMESTAMP_STRUCT dtbuf;
@@ -1263,7 +1263,7 @@ QVariant QODBCResult::data(int field)
d->fieldCache[i] = QVariant(QDateTime(QDate(dtbuf.year, dtbuf.month, dtbuf.day),
QTime(dtbuf.hour, dtbuf.minute, dtbuf.second, dtbuf.fraction / 1000000)));
else
- d->fieldCache[i] = QVariant(QVariant::DateTime);
+ d->fieldCache[i] = QVariant(QMetaType::fromType<QDateTime>());
break;
case QVariant::ByteArray:
d->fieldCache[i] = qGetBinaryData(d->hStmt, i);
@@ -1730,7 +1730,7 @@ bool QODBCResult::exec()
break; }
}
if (indicators[i] == SQL_NULL_DATA)
- values[i] = QVariant(QVariant::Type(values[i].userType()));
+ values[i] = QVariant(values[i].metaType());
}
return true;
}
@@ -2583,7 +2583,7 @@ QString QODBCDriver::formatValue(const QSqlField &field,
QString r;
if (field.isNull()) {
r = QLatin1String("NULL");
- } else if (field.type() == QVariant::DateTime) {
+ } else if (field.metaType().id() == QVariant::DateTime) {
// Use an escape sequence for the datetime fields
if (field.value().toDateTime().isValid()){
QDate dt = field.value().toDateTime().date();
@@ -2599,7 +2599,7 @@ QString QODBCDriver::formatValue(const QSqlField &field,
QLatin1String("' }");
} else
r = QLatin1String("NULL");
- } else if (field.type() == QVariant::ByteArray) {
+ } else if (field.metaType().id() == QVariant::ByteArray) {
QByteArray ba = field.value().toByteArray();
QString res;
static const char hexchars[] = "0123456789abcdef";
diff --git a/src/plugins/sqldrivers/psql/qsql_psql.cpp b/src/plugins/sqldrivers/psql/qsql_psql.cpp
index b477f701e2..60729840e2 100644
--- a/src/plugins/sqldrivers/psql/qsql_psql.cpp
+++ b/src/plugins/sqldrivers/psql/qsql_psql.cpp
@@ -634,7 +634,7 @@ QVariant QPSQLResult::data(int i)
int ptype = PQftype(d->result, i);
QVariant::Type type = qDecodePSQLType(ptype);
if (PQgetisnull(d->result, currentRow, i))
- return QVariant(type);
+ return QVariant(QMetaType(type), nullptr);
const char *val = PQgetvalue(d->result, currentRow, i);
switch (type) {
case QVariant::Bool:
@@ -805,8 +805,8 @@ QSqlRecord QPSQLResult::record() const
f.setTableName(QString());
}
int ptype = PQftype(d->result, i);
- f.setType(qDecodePSQLType(ptype));
- f.setValue(QVariant(f.type())); // only set in setType() when it's invalid before
+ f.setMetaType(QMetaType(qDecodePSQLType(ptype)));
+ f.setValue(QVariant(f.metaType())); // only set in setType() when it's invalid before
int len = PQfsize(d->result, i);
int precision = PQfmod(d->result, i);
@@ -856,7 +856,7 @@ static QString qCreateParamString(const QList<QVariant> &boundValues, const QSql
QString params;
QSqlField f;
for (const QVariant &val : boundValues) {
- f.setType(val.type());
+ f.setMetaType(val.metaType());
if (val.isNull())
f.clear();
else
@@ -1476,7 +1476,7 @@ QString QPSQLDriver::formatValue(const QSqlField &field, bool trimStrings) const
if (field.isNull()) {
r = nullStr();
} else {
- switch (int(field.type())) {
+ switch (field.metaType().id()) {
case QVariant::DateTime:
#if QT_CONFIG(datestring)
if (field.value().toDateTime().isValid()) {
diff --git a/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp b/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp
index f507e44d32..9edf94abd2 100644
--- a/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp
+++ b/src/plugins/sqldrivers/sqlite/qsql_sqlite.cpp
@@ -309,7 +309,7 @@ bool QSQLiteResultPrivate::fetchNext(QSqlCachedResult::ValueCache &values, int i
};
break;
case SQLITE_NULL:
- values[i + idx] = QVariant(QVariant::String);
+ values[i + idx] = QVariant(QMetaType::fromType<QString>());
break;
default:
values[i + idx] = QString(reinterpret_cast<const QChar *>(
diff --git a/src/sql/kernel/qsqldriver.cpp b/src/sql/kernel/qsqldriver.cpp
index 02371a209b..369330a951 100644
--- a/src/sql/kernel/qsqldriver.cpp
+++ b/src/sql/kernel/qsqldriver.cpp
@@ -599,7 +599,7 @@ QString QSqlDriver::formatValue(const QSqlField &field, bool trimStrings) const
if (field.isNull())
r = nullTxt;
else {
- switch (+field.type()) {
+ switch (field.metaType().id()) {
case QMetaType::Int:
case QMetaType::UInt:
if (field.value().userType() == QMetaType::Bool)
diff --git a/src/sql/kernel/qsqlfield.cpp b/src/sql/kernel/qsqlfield.cpp
index 86a22bae10..5a3d0a1a23 100644
--- a/src/sql/kernel/qsqlfield.cpp
+++ b/src/sql/kernel/qsqlfield.cpp
@@ -47,8 +47,8 @@ class QSqlFieldPrivate
{
public:
QSqlFieldPrivate(const QString &name,
- QVariant::Type type, const QString &tableName) :
- ref(1), nm(name), table(tableName), def(QVariant()), type(QMetaType::Type(type)),
+ QMetaType type, const QString &tableName) :
+ ref(1), nm(name), table(tableName), def(QVariant()), type(type),
req(QSqlField::Unknown), len(-1), prec(-1), tp(-1),
ro(false), gen(true), autoval(false)
{}
@@ -86,7 +86,7 @@ public:
QString nm;
QString table;
QVariant def;
- QMetaType::Type type;
+ QMetaType type;
QSqlField::RequiredStatus req;
int len;
int prec;
@@ -155,30 +155,53 @@ public:
*/
/*!
+ \fn QSqlField::QSqlField(const QString &fieldName, QVariant::Type type)
+
Constructs an empty field called \a fieldName of variant type \a type.
\sa setRequiredStatus(), setLength(), setPrecision(), setDefaultValue(),
setGenerated(), setReadOnly()
*/
-QSqlField::QSqlField(const QString &fieldName, QVariant::Type type)
+
+/*!
+ \fn QSqlField::QSqlField(const QString &fieldName, QVariant::Type type, const QString &table)
+
+ \overload
+ Constructs an empty field called \a fieldName of variant type \a
+ type in \a table.
+
+ \sa setRequiredStatus(), setLength(), setPrecision(), setDefaultValue(),
+ setGenerated(), setReadOnly()
+*/
+
+/*!
+ \fn QSqlField::QSqlField(const QString &fieldName, QVariant::Type type)
+
+ Constructs an empty field called \a fieldName of type \a type.
+
+ \sa setRequiredStatus(), setLength(), setPrecision(), setDefaultValue(),
+ setGenerated(), setReadOnly()
+*/
+QSqlField::QSqlField(const QString &fieldName, QMetaType type)
{
d = new QSqlFieldPrivate(fieldName, type, QString());
- val = QVariant(type);
+ val = QVariant(QMetaType(type), nullptr);
}
/*!
+ \fn QSqlField::QSqlField(const QString &fieldName, QVariant::Type type, const QString &table)
+
\overload
- Constructs an empty field called \a fieldName of variant type \a
+ Constructs an empty field called \a fieldName of type \a
type in \a table.
\sa setRequiredStatus(), setLength(), setPrecision(), setDefaultValue(),
setGenerated(), setReadOnly()
*/
-QSqlField::QSqlField(const QString &fieldName, QVariant::Type type,
- const QString &table)
+QSqlField::QSqlField(const QString &fieldName, QMetaType type, const QString &table)
{
d = new QSqlFieldPrivate(fieldName, type, table);
- val = QVariant(type);
+ val = QVariant(QMetaType(type), nullptr);
}
/*!
@@ -344,7 +367,7 @@ void QSqlField::clear()
{
if (isReadOnly())
return;
- val = QVariant(type());
+ val = QVariant(d->type, nullptr);
}
/*!
@@ -397,9 +420,9 @@ QString QSqlField::name() const
\sa setType()
*/
-QVariant::Type QSqlField::type() const
+QMetaType QSqlField::metaType() const
{
- return QVariant::Type(d->type);
+ return d->type;
}
/*!
@@ -408,15 +431,37 @@ QVariant::Type QSqlField::type() const
\sa type(), setRequiredStatus(), setLength(), setPrecision(),
setDefaultValue(), setGenerated(), setReadOnly()
*/
-void QSqlField::setType(QVariant::Type type)
+void QSqlField::setMetaType(QMetaType type)
{
detach();
- d->type = QMetaType::Type(type);
+ d->type = type;
if (!val.isValid())
- val = QVariant(type);
+ val = QVariant(type, nullptr);
}
/*!
+ \fn QVariant::Type QSqlField::type() const
+ \obsolete Use metaType() instead.
+
+ Returns the field's type as stored in the database.
+ Note that the actual value might have a different type,
+ Numerical values that are too large to store in a long
+ int or double are usually stored as strings to prevent
+ precision loss.
+
+ \sa metaType()
+*/
+
+/*!
+ \fn void QSqlField::setType(QVariant::Type type)
+ \obsolete Use setMetaType() instead.
+
+ Set's the field's variant type to \a type.
+
+ \sa setMetaType()
+*/
+
+/*!
Returns \c true if the field's value is read-only; otherwise returns
false.
@@ -525,7 +570,7 @@ bool QSqlField::isGenerated() const
*/
bool QSqlField::isValid() const
{
- return d->type != QMetaType::UnknownType;
+ return d->type.isValid();
}
#ifndef QT_NO_DEBUG_STREAM
@@ -533,7 +578,7 @@ QDebug operator<<(QDebug dbg, const QSqlField &f)
{
QDebugStateSaver saver(dbg);
dbg.nospace();
- dbg << "QSqlField(" << f.name() << ", " << QMetaType::typeName(f.type());
+ dbg << "QSqlField(" << f.name() << ", " << f.metaType().name();
dbg << ", tableName: " << (f.tableName().isEmpty() ? QStringLiteral("(not specified)") : f.tableName());
if (f.length() >= 0)
dbg << ", length: " << f.length();
diff --git a/src/sql/kernel/qsqlfield.h b/src/sql/kernel/qsqlfield.h
index 892420d26e..c4acc6a22c 100644
--- a/src/sql/kernel/qsqlfield.h
+++ b/src/sql/kernel/qsqlfield.h
@@ -54,10 +54,19 @@ class Q_SQL_EXPORT QSqlField
public:
enum RequiredStatus { Unknown = -1, Optional = 0, Required = 1 };
- explicit QSqlField(const QString& fieldName = QString(),
- QVariant::Type type = {});
- QSqlField(const QString &fieldName, QVariant::Type type,
- const QString &tableName);
+#if QT_DEPRECATED_SINCE(6,0)
+ QT_DEPRECATED_VERSION_X_6_0("Use the constructor using a QMetaType instead")
+ explicit QSqlField(const QString& fieldName, QVariant::Type type)
+ : QSqlField(fieldName, QMetaType(type))
+ {}
+ QT_DEPRECATED_VERSION_X_6_0("Use the constructor using a QMetaType instead")
+ QSqlField(const QString &fieldName, QVariant::Type type, const QString &tableName)
+ : QSqlField(fieldName, QMetaType(type), tableName)
+ {}
+#endif
+
+ explicit QSqlField(const QString& fieldName = QString(), QMetaType type = QMetaType());
+ QSqlField(const QString &fieldName, QMetaType type, const QString &tableName);
QSqlField(const QSqlField& other);
QSqlField& operator=(const QSqlField& other);
@@ -76,10 +85,16 @@ public:
void setReadOnly(bool readOnly);
bool isReadOnly() const;
void clear();
- QVariant::Type type() const;
bool isAutoValue() const;
- void setType(QVariant::Type type);
+ QMetaType metaType() const;
+ void setMetaType(QMetaType type);
+#if QT_DEPRECATED_SINCE(6,0)
+ QT_DEPRECATED_VERSION_X_6_0("Use metaType() instead")
+ QVariant::Type type() const { return QVariant::Type(metaType().id()); };
+ QT_DEPRECATED_VERSION_X_6_0("Use setMetaType() instead")
+ void setType(QVariant::Type type) { setMetaType(QMetaType(int(type))); }
+#endif
void setRequiredStatus(RequiredStatus status);
inline void setRequired(bool required)
{ setRequiredStatus(required ? Required : Optional); }
diff --git a/src/sql/kernel/qsqlresult.cpp b/src/sql/kernel/qsqlresult.cpp
index f3ab4c10cf..24ca1ffeda 100644
--- a/src/sql/kernel/qsqlresult.cpp
+++ b/src/sql/kernel/qsqlresult.cpp
@@ -631,7 +631,7 @@ bool QSqlResult::exec()
for (i = d->holders.count() - 1; i >= 0; --i) {
holder = d->holders.at(i).holderName;
val = d->values.value(d->indexes.value(holder).value(0,-1));
- QSqlField f(QLatin1String(""), QVariant::Type(val.userType()));
+ QSqlField f(QLatin1String(""), val.metaType());
f.setValue(val);
query = query.replace(d->holders.at(i).holderPos,
holder.length(), driver()->formatValue(f));
@@ -645,7 +645,7 @@ bool QSqlResult::exec()
if (i == -1)
continue;
QVariant var = d->values.value(idx);
- QSqlField f(QLatin1String(""), QVariant::Type(var.userType()));
+ QSqlField f(QLatin1String(""), var.metaType());
if (var.isNull())
f.clear();
else
diff --git a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
index f726139e08..7d75aec845 100644
--- a/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
+++ b/tests/auto/sql/kernel/qsqldatabase/tst_qsqldatabase.cpp
@@ -582,17 +582,17 @@ void tst_QSqlDatabase::whitespaceInIdentifiers()
QCOMPARE(rec.count(), 1);
QCOMPARE(rec.fieldName(0), QString("test test"));
if (dbType == QSqlDriver::Oracle)
- QCOMPARE(rec.field(0).type(), QVariant::Double);
+ QCOMPARE(rec.field(0).metaType(), QMetaType(QMetaType::Double));
else
- QCOMPARE(rec.field(0).type(), QVariant::Int);
+ QCOMPARE(rec.field(0).metaType(), QMetaType(QMetaType::Int));
QSqlIndex idx = db.primaryIndex(tableName);
QCOMPARE(idx.count(), 1);
QCOMPARE(idx.fieldName(0), QString("test test"));
if (dbType == QSqlDriver::Oracle)
- QCOMPARE(idx.field(0).type(), QVariant::Double);
+ QCOMPARE(idx.field(0).metaType(), QMetaType(QMetaType::Double));
else
- QCOMPARE(idx.field(0).type(), QVariant::Int);
+ QCOMPARE(idx.field(0).metaType(), QMetaType(QMetaType::Int));
} else {
QSKIP("DBMS does not support whitespaces in identifiers");
}
@@ -644,8 +644,8 @@ void tst_QSqlDatabase::record()
CHECK_DATABASE(db);
static const FieldDef fieldDefs[] = {
- FieldDef("char(20)", QVariant::String, QString("blah1"), false),
- FieldDef("varchar(20)", QVariant::String, QString("blah2"), false),
+ FieldDef("char(20)", QMetaType(QMetaType::String), QString("blah1"), false),
+ FieldDef("varchar(20)", QMetaType(QMetaType::String), QString("blah2"), false),
FieldDef()
};
@@ -663,10 +663,10 @@ void tst_QSqlDatabase::testRecord(const FieldDef fieldDefs[], const QSqlRecord&
QVERIFY2(inf.field(i).isAutoValue(), qPrintable(inf.field(i).name() + " should be reporting as an autovalue"));
for (i = 0; !fieldDefs[ i ].typeName.isNull(); ++i) {
QCOMPARE(inf.field(i+1).name().toUpper(), fieldDefs[ i ].fieldName().toUpper());
- if (inf.field(i+1).type() != fieldDefs[ i ].type) {
+ if (inf.field(i+1).metaType().id() != int(fieldDefs[ i ].type)) {
QFAIL(qPrintable(QString(" Expected: '%1' Received: '%2' for field %3 in testRecord").arg(
- QVariant::typeToName(fieldDefs[ i ].type)).arg(
- QVariant::typeToName(inf.field(i+1).type())).arg(
+ QMetaType(fieldDefs[ i ].type).name()).arg(
+ inf.field(i+1).metaType().name()).arg(
fieldDefs[ i ].fieldName())));
}
QVERIFY(!inf.field(i+1).isAutoValue());
@@ -681,7 +681,7 @@ void tst_QSqlDatabase::commonFieldTest(const FieldDef fieldDefs[], QSqlDatabase
CHECK_DATABASE(db);
const QStringList tableNames = { qTableName("qtestfields", __FILE__, db),
qTableName("qtestfields", __FILE__, db, false) };
- for (const QString table : tableNames) {
+ for (const QString &table : tableNames) {
QSqlRecord rec = db.record(table);
QCOMPARE(rec.count(), fieldCount + 1);
testRecord(fieldDefs, rec, db);
@@ -1316,8 +1316,8 @@ void tst_QSqlDatabase::psql_escapedIdentifiers()
QVERIFY(db.tables().contains(qTableName(bumpyCase, __FILE__, db, false) + '.' +
qTableName("qtest", __FILE__, db, false), Qt::CaseSensitive));
- QSqlField fld1(field1Name, QVariant::Int);
- QSqlField fld2(field2Name, QVariant::String);
+ QSqlField fld1(field1Name, QMetaType(QMetaType::Int));
+ QSqlField fld2(field2Name, QMetaType(QMetaType::QString));
QSqlRecord rec;
rec.append(fld1);
rec.append(fld2);
@@ -1330,7 +1330,7 @@ void tst_QSqlDatabase::psql_escapedIdentifiers()
QCOMPARE(rec.count(), 2);
QCOMPARE(rec.fieldName(0), field1Name);
QCOMPARE(rec.fieldName(1), field2Name);
- QCOMPARE(rec.field(0).type(), QVariant::Int);
+ QCOMPARE(rec.field(0).metaType(), QMetaType(QMetaType::Int));
q.exec(QString("DROP SCHEMA %1 CASCADE").arg(schemaName));
}
@@ -1433,14 +1433,14 @@ void tst_QSqlDatabase::precisionPolicy()
QSqlDriver::DbmsType dbType = tst_Databases::getDatabaseType(db);
if (dbType == QSqlDriver::SQLite)
QEXPECT_FAIL("", "SQLite returns this value as determined by contents of the field, not the declaration", Continue);
- QCOMPARE(q.value(0).type(), QVariant::String);
+ QCOMPARE(q.value(0).metaType(), QMetaType(QMetaType::QString));
q.setNumericalPrecisionPolicy(QSql::LowPrecisionInt64);
QVERIFY_SQL(q, exec(query));
QVERIFY_SQL(q, next());
- if(q.value(0).type() != QVariant::LongLong)
+ if(q.value(0).metaType() != QMetaType(QMetaType::LongLong))
QEXPECT_FAIL("", "SQLite returns this value as determined by contents of the field, not the declaration", Continue);
- QCOMPARE(q.value(0).type(), QVariant::LongLong);
+ QCOMPARE(q.value(0).metaType(), QMetaType(QMetaType::LongLong));
QCOMPARE(q.value(0).toLongLong(), (qlonglong)123);
q.setNumericalPrecisionPolicy(QSql::LowPrecisionInt32);
@@ -1448,7 +1448,7 @@ void tst_QSqlDatabase::precisionPolicy()
QVERIFY_SQL(q, next());
if (dbType == QSqlDriver::SQLite)
QEXPECT_FAIL("", "SQLite returns this value as determined by contents of the field, not the declaration", Continue);
- QCOMPARE(q.value(0).type(), QVariant::Int);
+ QCOMPARE(q.value(0).metaType(), QMetaType(QMetaType::Int));
QCOMPARE(q.value(0).toInt(), 123);
q.setNumericalPrecisionPolicy(QSql::LowPrecisionDouble);
@@ -1456,7 +1456,7 @@ void tst_QSqlDatabase::precisionPolicy()
QVERIFY_SQL(q, next());
if (dbType == QSqlDriver::SQLite)
QEXPECT_FAIL("", "SQLite returns this value as determined by contents of the field, not the declaration", Continue);
- QCOMPARE(q.value(0).type(), QVariant::Double);
+ QCOMPARE(q.value(0).metaType(), QMetaType(QMetaType::Double));
QCOMPARE(q.value(0).toDouble(), (double)123);
query = QString("SELECT num FROM %1 WHERE id = 2").arg(tableName);
@@ -1464,7 +1464,7 @@ void tst_QSqlDatabase::precisionPolicy()
QVERIFY_SQL(q, next());
if (dbType == QSqlDriver::SQLite)
QEXPECT_FAIL("", "SQLite returns this value as determined by contents of the field, not the declaration", Continue);
- QCOMPARE(q.value(0).type(), QVariant::Double);
+ QCOMPARE(q.value(0).metaType(), QMetaType(QMetaType::Double));
QCOMPARE(q.value(0).toDouble(), QString("1850000000000.0001").toDouble());
// Postgres returns invalid QVariants on overflow
@@ -1473,13 +1473,13 @@ void tst_QSqlDatabase::precisionPolicy()
QVERIFY_SQL(q, next());
if (dbType == QSqlDriver::SQLite)
QEXPECT_FAIL("", "SQLite returns this value as determined by contents of the field, not the declaration", Continue);
- QCOMPARE(q.value(0).type(), QVariant::String);
+ QCOMPARE(q.value(0).metaType(), QMetaType(QMetaType::QString));
q.setNumericalPrecisionPolicy(QSql::LowPrecisionInt64);
QEXPECT_FAIL("QOCI", "Oracle fails here, to retrieve next", Continue);
QVERIFY_SQL(q, exec(query));
QVERIFY_SQL(q, next());
- QCOMPARE(q.value(0).type(), QVariant::LongLong);
+ QCOMPARE(q.value(0).metaType(), QMetaType(QMetaType::LongLong));
QSql::NumericalPrecisionPolicy oldPrecision= db.numericalPrecisionPolicy();
db.setNumericalPrecisionPolicy(QSql::LowPrecisionInt64);
@@ -1487,7 +1487,7 @@ void tst_QSqlDatabase::precisionPolicy()
q2.exec(QString("SELECT num FROM %1 WHERE id = 2").arg(tableName));
QVERIFY_SQL(q2, exec(query));
QVERIFY_SQL(q2, next());
- QCOMPARE(q2.value(0).type(), QVariant::LongLong);
+ QCOMPARE(q2.value(0).metaType(), QMetaType(QMetaType::LongLong));
db.setNumericalPrecisionPolicy(oldPrecision);
}
@@ -1634,11 +1634,11 @@ void tst_QSqlDatabase::ibase_numericFields()
QCOMPARE(q.value(2).toString(), QString("%1").arg(num2));
QCOMPARE(QString("%1").arg(q.value(3).toDouble()), QString("%1").arg(num3));
QCOMPARE(QString("%1").arg(q.value(4).toDouble()), QString("%1").arg(num4));
- QCOMPARE(q.value(0).type(), QVariant::Int);
- QCOMPARE(q.value(1).type(), QVariant::Double);
- QCOMPARE(q.value(2).type(), QVariant::Double);
- QCOMPARE(q.value(3).type(), QVariant::Double);
- QCOMPARE(q.value(4).type(), QVariant::Double);
+ QCOMPARE(q.value(0).metaType(), QMetaType(QMetaType::Int));
+ QCOMPARE(q.value(1).metaType(), QMetaType(QMetaType::Double));
+ QCOMPARE(q.value(2).metaType(), QMetaType(QMetaType::Double));
+ QCOMPARE(q.value(3).metaType(), QMetaType(QMetaType::Double));
+ QCOMPARE(q.value(4).metaType(), QMetaType(QMetaType::Double));
QCOMPARE(q.record().field(1).length(), 2);
QCOMPARE(q.record().field(1).precision(), 1);
@@ -1653,11 +1653,11 @@ void tst_QSqlDatabase::ibase_numericFields()
}
QSqlRecord r = db.record(tableName);
- QCOMPARE(r.field(0).type(), QVariant::Int);
- QCOMPARE(r.field(1).type(), QVariant::Double);
- QCOMPARE(r.field(2).type(), QVariant::Double);
- QCOMPARE(r.field(3).type(), QVariant::Double);
- QCOMPARE(r.field(4).type(), QVariant::Double);
+ QCOMPARE(r.field(0).metaType(), QMetaType(QMetaType::Int));
+ QCOMPARE(r.field(1).metaType(), QMetaType(QMetaType::Double));
+ QCOMPARE(r.field(2).metaType(), QMetaType(QMetaType::Double));
+ QCOMPARE(r.field(3).metaType(), QMetaType(QMetaType::Double));
+ QCOMPARE(r.field(4).metaType(), QMetaType(QMetaType::Double));
QCOMPARE(r.field(1).length(), 2);
QCOMPARE(r.field(1).precision(), 1);
QCOMPARE(r.field(2).length(), 5);
@@ -2220,7 +2220,7 @@ void tst_QSqlDatabase::sqlite_bindAndFetchUInt()
// All integers in SQLite are signed, so even though we bound the value
// as an UInt it will come back as a LongLong
- QCOMPARE(q.value(0).type(), QVariant::LongLong);
+ QCOMPARE(q.value(0).metaType(), QMetaType(QMetaType::LongLong));
QCOMPARE(q.value(0).toUInt(), 4000000000U);
}
diff --git a/tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp b/tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp
index 7efd19a2b8..0be74c126c 100644
--- a/tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp
+++ b/tests/auto/sql/kernel/qsqlfield/tst_qsqlfield.cpp
@@ -134,7 +134,7 @@ void tst_QSqlField::clear_data()
void tst_QSqlField::clear()
{
- QSqlField field( "Testfield", QVariant::Int );
+ QSqlField field( "Testfield", QMetaType(QMetaType::Int) );
QFETCH( int, val );
field.setValue( val );
field.setReadOnly(true);
@@ -142,7 +142,7 @@ void tst_QSqlField::clear()
QVERIFY( field.value() == val );
QVERIFY( !field.isNull() );
- QSqlField bfield( "Testfield", QVariant::Bool );
+ QSqlField bfield( "Testfield", QMetaType(QMetaType::Bool) );
QFETCH( bool, bval );
bfield.setValue( QVariant(bval) );
bfield.setReadOnly(true);
@@ -151,7 +151,7 @@ void tst_QSqlField::clear()
QVERIFY( bfield.value() == QVariant(bval) );
QVERIFY( !bfield.isNull() );
- QSqlField ffield( "Testfield", QVariant::Double );
+ QSqlField ffield( "Testfield", QMetaType(QMetaType::Double) );
QFETCH( double, fval );
ffield.setValue( fval );
ffield.setReadOnly(true);
@@ -159,7 +159,7 @@ void tst_QSqlField::clear()
QVERIFY( ffield.value() == fval );
QVERIFY( !ffield.isNull() );
- QSqlField sfield( "Testfield", QVariant::String );
+ QSqlField sfield( "Testfield", QMetaType(QMetaType::QString) );
QFETCH( QString, strVal );
sfield.setValue( strVal );
sfield.setReadOnly(true);
@@ -170,13 +170,13 @@ void tst_QSqlField::clear()
void tst_QSqlField::isNull()
{
- QSqlField field( "test", QVariant::String );
+ QSqlField field( "test", QMetaType(QMetaType::QString) );
QVERIFY( field.isNull() );
}
void tst_QSqlField::isReadOnly()
{
- QSqlField field( "test", QVariant::String );
+ QSqlField field( "test", QMetaType(QMetaType::QString) );
QVERIFY( !field.isReadOnly() );
field.setReadOnly( true );
QVERIFY( field.isReadOnly() );
@@ -196,7 +196,7 @@ void tst_QSqlField::name_data()
void tst_QSqlField::name()
{
- QSqlField field( "test", QVariant::String );
+ QSqlField field( "test", QMetaType(QMetaType::QString) );
QFETCH( QString, val );
QCOMPARE(field.name(), QLatin1String("test"));
field.setName( val );
@@ -205,28 +205,28 @@ void tst_QSqlField::name()
void tst_QSqlField::operator_Assign()
{
- QSqlField field1( "test", QVariant::String );
+ QSqlField field1( "test", QMetaType(QMetaType::QString) );
field1.setValue( "Harry" );
field1.setReadOnly( true );
QSqlField field2 = field1;
QVERIFY( field1 == field2 );
- QSqlField field3( "test", QVariant::Double );
+ QSqlField field3( "test", QMetaType(QMetaType::Double) );
field3.clear();
field1 = field3;
QVERIFY( field1 == field3 );
- QSqlField field4("test", QVariant::String, "ATable");
+ QSqlField field4("test", QMetaType(QMetaType::QString), "ATable");
field1 = field4;
QVERIFY(field1 == field4);
}
void tst_QSqlField::operator_Equal()
{
- QSqlField field1( "test", QVariant::String );
- QSqlField field2( "test2", QVariant::String );
- QSqlField field3( "test", QVariant::Int );
- QSqlField field4("test", QVariant::String, QString("ATable"));
- QSqlField field5("test2", QVariant::String, QString("ATable"));
- QSqlField field6("test", QVariant::String, QString("BTable"));
+ QSqlField field1( "test", QMetaType(QMetaType::QString) );
+ QSqlField field2( "test2", QMetaType(QMetaType::QString) );
+ QSqlField field3( "test", QMetaType(QMetaType::Int) );
+ QSqlField field4("test", QMetaType(QMetaType::QString), QString("ATable"));
+ QSqlField field5("test2", QMetaType(QMetaType::QString), QString("ATable"));
+ QSqlField field6("test", QMetaType(QMetaType::QString), QString("BTable"));
QVERIFY( !(field1 == field2) );
QVERIFY( !(field1 == field3) );
@@ -265,7 +265,7 @@ void tst_QSqlField::setName_data()
void tst_QSqlField::setName()
{
- QSqlField field( "test", QVariant::String );
+ QSqlField field( "test", QMetaType(QMetaType::QString) );
QFETCH( QString, val );
QCOMPARE(field.name(), QLatin1String("test"));
field.setName( val );
@@ -274,7 +274,7 @@ void tst_QSqlField::setName()
void tst_QSqlField::setNull()
{
- QSqlField field( "test", QVariant::String );
+ QSqlField field( "test", QMetaType(QMetaType::QString) );
field.setValue( "test" );
field.clear();
QVERIFY( field.value() == QVariant().toString() );
@@ -283,7 +283,7 @@ void tst_QSqlField::setNull()
void tst_QSqlField::setReadOnly()
{
- QSqlField field( "test", QVariant::String );
+ QSqlField field( "test", QMetaType(QMetaType::QString) );
field.setValue( "test" );
field.setReadOnly( true );
field.setValue( "Harry" );
@@ -317,10 +317,10 @@ void tst_QSqlField::setValue_data()
void tst_QSqlField::setValue()
{
- QSqlField field1 ( "test", QVariant::Int );
- QSqlField field2 ( "test", QVariant::String );
- QSqlField field3 ( "test", QVariant::Bool );
- QSqlField field4 ( "test", QVariant::Double );
+ QSqlField field1 ( "test", QMetaType(QMetaType::Int) );
+ QSqlField field2 ( "test", QMetaType(QMetaType::QString) );
+ QSqlField field3 ( "test", QMetaType(QMetaType::Bool) );
+ QSqlField field4 ( "test", QMetaType(QMetaType::Double) );
field1.clear();
QFETCH( int, ival );
QFETCH( QString, sval );
@@ -344,12 +344,12 @@ void tst_QSqlField::setValue()
void tst_QSqlField::type()
{
- QSqlField field1( "string", QVariant::String );
- QSqlField field2( "string", QVariant::Bool );
- QSqlField field3( "string", QVariant::Double );
- QVERIFY( field1.type() == QVariant::String );
- QVERIFY( field2.type() == QVariant::Bool );
- QVERIFY( field3.type() == QVariant::Double );
+ QSqlField field1( "string", QMetaType(QMetaType::QString) );
+ QSqlField field2( "string", QMetaType(QMetaType::Bool) );
+ QSqlField field3( "string", QMetaType(QMetaType::Double) );
+ QVERIFY( field1.metaType() == QMetaType(QMetaType::QString) );
+ QVERIFY( field2.metaType() == QMetaType(QMetaType::Bool) );
+ QVERIFY( field3.metaType() == QMetaType(QMetaType::Double) );
}
void tst_QSqlField::setTableName_data()
@@ -362,7 +362,7 @@ void tst_QSqlField::setTableName_data()
void tst_QSqlField::setTableName()
{
- QSqlField field("test", QVariant::String, "test");
+ QSqlField field("test", QMetaType(QMetaType::QString), "test");
QFETCH(QString, tableName);
QCOMPARE(field.tableName(), QLatin1String("test"));
field.setTableName(tableName);
diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
index 527a9ba647..23ebc1fbfd 100644
--- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
+++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp
@@ -1072,9 +1072,9 @@ void tst_QSqlQuery::record()
QCOMPARE( q.record().fieldName( 0 ).toLower(), QString( "id" ) );
QCOMPARE( q.record().fieldName( 1 ).toLower(), QString( "t_varchar" ) );
QCOMPARE( q.record().fieldName( 2 ).toLower(), QString( "t_char" ) );
- QCOMPARE(q.record().value(0), QVariant(q.record().field(0).type()));
- QCOMPARE(q.record().value(1), QVariant(q.record().field(1).type()));
- QCOMPARE(q.record().value(2), QVariant(q.record().field(2).type()));
+ QCOMPARE(q.record().value(0), QVariant(q.record().field(0).metaType()));
+ QCOMPARE(q.record().value(1), QVariant(q.record().field(1).metaType()));
+ QCOMPARE(q.record().value(2), QVariant(q.record().field(2).metaType()));
QVERIFY( q.next() );
QVERIFY( q.next() );
@@ -2694,18 +2694,18 @@ void tst_QSqlQuery::record_sqlite()
QSqlRecord rec = db.record(qTableName("record_sqlite", __FILE__, db));
QCOMPARE( rec.count(), 3 );
- QCOMPARE( rec.field( 0 ).type(), QVariant::Int );
- QCOMPARE( rec.field( 1 ).type(), QVariant::String );
- QCOMPARE( rec.field( 2 ).type(), QVariant::Int );
+ QCOMPARE( rec.field( 0 ).metaType().id(), QVariant::Int );
+ QCOMPARE( rec.field( 1 ).metaType().id(), QVariant::String );
+ QCOMPARE( rec.field( 2 ).metaType().id(), QVariant::Int );
/* important - select from an empty table */
QVERIFY_SQL(q, exec("select id, name, title from " + qTableName("record_sqlite", __FILE__, db)));
rec = q.record();
QCOMPARE( rec.count(), 3 );
- QCOMPARE( rec.field( 0 ).type(), QVariant::Int );
- QCOMPARE( rec.field( 1 ).type(), QVariant::String );
- QCOMPARE( rec.field( 2 ).type(), QVariant::Int );
+ QCOMPARE( rec.field( 0 ).metaType().id(), QVariant::Int );
+ QCOMPARE( rec.field( 1 ).metaType().id(), QVariant::String );
+ QCOMPARE( rec.field( 2 ).metaType().id(), QVariant::Int );
}
void tst_QSqlQuery::oraLong()
@@ -3092,7 +3092,7 @@ void tst_QSqlQuery::nextResult()
QCOMPARE( q.record().field( 0 ).name().toUpper(), QString( "ID" ) );
- QCOMPARE( q.record().field( 0 ).type(), QVariant::Int );
+ QCOMPARE( q.record().field( 0 ).metaType().id(), QVariant::Int );
QVERIFY( q.nextResult() ); // Discards first result set and move to the next
@@ -3100,10 +3100,10 @@ void tst_QSqlQuery::nextResult()
QCOMPARE( q.record().field( 0 ).name().toUpper(), QString( "TEXT" ) );
- QCOMPARE( q.record().field( 0 ).type(), QVariant::String );
+ QCOMPARE( q.record().field( 0 ).metaType().id(), QVariant::String );
QCOMPARE( q.record().field( 1 ).name().toUpper(), QString( "NUM" ) );
- QCOMPARE(q.record().field(1).type(), QVariant::Double);
+ QCOMPARE(q.record().field(1).metaType().id(), QVariant::Double);
QVERIFY( q.next() ); // Move to first row of the second result set
@@ -3915,14 +3915,14 @@ void tst_QSqlQuery::QTBUG_23895()
QVERIFY_SQL(q, exec(sql));
QVERIFY_SQL(q, next());
- QCOMPARE(q.record().field(0).type(), QVariant::Int);
- QCOMPARE(q.value(0).type(), QVariant::LongLong);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Int);
+ QCOMPARE(q.value(0).metaType().id(), QVariant::LongLong);
QCOMPARE(q.value(0).toInt(), 1);
- QCOMPARE(q.record().field(1).type(), QVariant::Bool);
- QCOMPARE(q.value(1).type(), QVariant::LongLong);
+ QCOMPARE(q.record().field(1).metaType().id(), QVariant::Bool);
+ QCOMPARE(q.value(1).metaType().id(), QVariant::LongLong);
QCOMPARE(q.value(1).toBool(), true);
- QCOMPARE(q.record().field(2).type(), QVariant::Bool);
- QCOMPARE(q.value(2).type(), QVariant::LongLong);
+ QCOMPARE(q.record().field(2).metaType().id(), QVariant::Bool);
+ QCOMPARE(q.value(2).metaType().id(), QVariant::LongLong);
QCOMPARE(q.value(2).toBool(), false);
q.prepare("insert into " + tableName + "(id, val1, val2) values(?, ?, ?);");
@@ -3971,14 +3971,14 @@ void tst_QSqlQuery::QTBUG_14904()
QVERIFY_SQL(q, next());
QCOMPARE(q.record().indexOf("value1"), 0);
- QCOMPARE(q.record().field(0).type(), QVariant::Bool);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Bool);
QCOMPARE(q.value(0).toBool(), true);
sql="select val1 AS 'value.one' from " + tableName;
QVERIFY_SQL(q, exec(sql));
QVERIFY_SQL(q, next());
QCOMPARE(q.record().indexOf("value.one"), 0); // was -1 before bug fix
- QCOMPARE(q.record().field(0).type(), QVariant::Bool);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Bool);
QCOMPARE(q.value(0).toBool(), true);
}
@@ -4104,7 +4104,7 @@ void tst_QSqlQuery::gisPointDatatype()
QVERIFY(sqlQuery.exec(sqlCommand));
sqlCommand = QStringLiteral("SELECT * FROM %1;").arg(tableName);
QVERIFY(sqlQuery.exec(sqlCommand));
- QCOMPARE(sqlQuery.record().field(0).type(), QVariant::Type::ByteArray);
+ QCOMPARE(sqlQuery.record().field(0).metaType().id(), QVariant::Type::ByteArray);
QVERIFY(sqlQuery.next());
}
@@ -4250,7 +4250,7 @@ void tst_QSqlQuery::sqlite_real()
QVERIFY_SQL(q, exec("SELECT realVal FROM " + tableName));
QVERIFY(q.next());
QCOMPARE(q.value(0).toDouble(), 2.3);
- QCOMPARE(q.record().field(0).type(), QVariant::Double);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Double);
q.prepare("INSERT INTO " + tableName + " (id, realVal) VALUES (?, ?)");
QVariant var((double)5.6);
@@ -4292,9 +4292,9 @@ void tst_QSqlQuery::aggregateFunctionTypes()
QVERIFY_SQL(q, exec("SELECT SUM(id) FROM " + tableName));
QVERIFY(q.next());
if (dbType == QSqlDriver::SQLite)
- QCOMPARE(q.record().field(0).type(), QVariant::Invalid);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Invalid);
else
- QCOMPARE(q.record().field(0).type(), sumType);
+ QCOMPARE(q.record().field(0).metaType().id(), sumType);
QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id) VALUES (1)"));
QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id) VALUES (2)"));
@@ -4302,33 +4302,33 @@ void tst_QSqlQuery::aggregateFunctionTypes()
QVERIFY_SQL(q, exec("SELECT SUM(id) FROM " + tableName));
QVERIFY(q.next());
QCOMPARE(q.value(0).toInt(), 3);
- QCOMPARE(q.record().field(0).type(), sumType);
+ QCOMPARE(q.record().field(0).metaType().id(), sumType);
QVERIFY_SQL(q, exec("SELECT AVG(id) FROM " + tableName));
QVERIFY(q.next());
if (dbType == QSqlDriver::SQLite || dbType == QSqlDriver::PostgreSQL || dbType == QSqlDriver::MySqlServer
|| dbType == QSqlDriver::Oracle) {
QCOMPARE(q.value(0).toDouble(), 1.5);
- QCOMPARE(q.record().field(0).type(), QVariant::Double);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Double);
} else {
QCOMPARE(q.value(0).toInt(), 1);
- QCOMPARE(q.record().field(0).type(), QVariant::Int);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Int);
}
QVERIFY_SQL(q, exec("SELECT COUNT(id) FROM " + tableName));
QVERIFY(q.next());
QCOMPARE(q.value(0).toInt(), 2);
- QCOMPARE(q.record().field(0).type(), countType);
+ QCOMPARE(q.record().field(0).metaType().id(), countType);
QVERIFY_SQL(q, exec("SELECT MIN(id) FROM " + tableName));
QVERIFY(q.next());
QCOMPARE(q.value(0).toInt(), 1);
- QCOMPARE(q.record().field(0).type(), intType);
+ QCOMPARE(q.record().field(0).metaType().id(), intType);
QVERIFY_SQL(q, exec("SELECT MAX(id) FROM " + tableName));
QVERIFY(q.next());
QCOMPARE(q.value(0).toInt(), 2);
- QCOMPARE(q.record().field(0).type(), intType);
+ QCOMPARE(q.record().field(0).metaType().id(), intType);
}
{
const QString tableName(qTableName("numericFunctionsWithDoubleValues", __FILE__, db));
@@ -4341,9 +4341,9 @@ void tst_QSqlQuery::aggregateFunctionTypes()
QVERIFY_SQL(q, exec("SELECT SUM(id) FROM " + tableName));
QVERIFY(q.next());
if (dbType == QSqlDriver::SQLite)
- QCOMPARE(q.record().field(0).type(), QVariant::Invalid);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Invalid);
else
- QCOMPARE(q.record().field(0).type(), QVariant::Double);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Double);
QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id) VALUES (1.5)"));
QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id) VALUES (2.5)"));
@@ -4351,27 +4351,27 @@ void tst_QSqlQuery::aggregateFunctionTypes()
QVERIFY_SQL(q, exec("SELECT SUM(id) FROM " + tableName));
QVERIFY(q.next());
QCOMPARE(q.value(0).toDouble(), 4.0);
- QCOMPARE(q.record().field(0).type(), QVariant::Double);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Double);
QVERIFY_SQL(q, exec("SELECT AVG(id) FROM " + tableName));
QVERIFY(q.next());
QCOMPARE(q.value(0).toDouble(), 2.0);
- QCOMPARE(q.record().field(0).type(), QVariant::Double);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Double);
QVERIFY_SQL(q, exec("SELECT COUNT(id) FROM " + tableName));
QVERIFY(q.next());
QCOMPARE(q.value(0).toInt(), 2);
- QCOMPARE(q.record().field(0).type(), countType);
+ QCOMPARE(q.record().field(0).metaType().id(), countType);
QVERIFY_SQL(q, exec("SELECT MIN(id) FROM " + tableName));
QVERIFY(q.next());
QCOMPARE(q.value(0).toDouble(), 1.5);
- QCOMPARE(q.record().field(0).type(), QVariant::Double);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Double);
QVERIFY_SQL(q, exec("SELECT MAX(id) FROM " + tableName));
QVERIFY(q.next());
QCOMPARE(q.value(0).toDouble(), 2.5);
- QCOMPARE(q.record().field(0).type(), QVariant::Double);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Double);
QString field = "id";
@@ -4383,7 +4383,7 @@ void tst_QSqlQuery::aggregateFunctionTypes()
QVERIFY_SQL(q, exec("SELECT ROUND(" + field + ", 1) FROM " + tableName + " WHERE id=1.5"));
QVERIFY(q.next());
QCOMPARE(q.value(0).toDouble(), 1.5);
- QCOMPARE(q.record().field(0).type(), QVariant::Double);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Double);
QVERIFY_SQL(q, exec("SELECT ROUND(" + field + ", 0) FROM " + tableName + " WHERE id=2.5"));
QVERIFY(q.next());
@@ -4391,7 +4391,7 @@ void tst_QSqlQuery::aggregateFunctionTypes()
QCOMPARE(q.value(0).toDouble(), 2.0);
else
QCOMPARE(q.value(0).toDouble(), 3.0);
- QCOMPARE(q.record().field(0).type(), QVariant::Double);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Double);
}
{
const QString tableName(qTableName("stringFunctions", __FILE__, db));
@@ -4403,9 +4403,9 @@ void tst_QSqlQuery::aggregateFunctionTypes()
QVERIFY_SQL(q, exec("SELECT MAX(txt) FROM " + tableName));
QVERIFY(q.next());
if (dbType == QSqlDriver::SQLite)
- QCOMPARE(q.record().field(0).type(), QVariant::Invalid);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::Invalid);
else
- QCOMPARE(q.record().field(0).type(), QVariant::String);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::String);
QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id, txt) VALUES (1, 'lower')"));
QVERIFY_SQL(q, exec("INSERT INTO " + tableName + " (id, txt) VALUES (2, 'upper')"));
@@ -4413,7 +4413,7 @@ void tst_QSqlQuery::aggregateFunctionTypes()
QVERIFY_SQL(q, exec("SELECT MAX(txt) FROM " + tableName));
QVERIFY(q.next());
QCOMPARE(q.value(0).toString(), QLatin1String("upper"));
- QCOMPARE(q.record().field(0).type(), QVariant::String);
+ QCOMPARE(q.record().field(0).metaType().id(), QVariant::String);
}
}
@@ -4456,9 +4456,9 @@ void runIntegralTypesMysqlTest(QSqlDatabase &db, const QString &tableName, const
QVariant value = q.value(0);
actualVariantValues << value;
actualValues << value.value<T>();
- QVERIFY(actualVariantValues.last().userType() != qMetaTypeId<char>());
- QVERIFY(actualVariantValues.last().userType() != qMetaTypeId<signed char>());
- QVERIFY(actualVariantValues.last().userType() != qMetaTypeId<unsigned char>());
+ QVERIFY(actualVariantValues.last().metaType().id() != qMetaTypeId<char>());
+ QVERIFY(actualVariantValues.last().metaType().id() != qMetaTypeId<signed char>());
+ QVERIFY(actualVariantValues.last().metaType().id() != qMetaTypeId<unsigned char>());
}
QCOMPARE(actualValues, values);
QCOMPARE(actualVariantValues, variantValues);
diff --git a/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp b/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp
index 8a87f8bf15..88e052cd18 100644
--- a/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp
+++ b/tests/auto/sql/models/qsqlquerymodel/tst_qsqlquerymodel.cpp
@@ -417,9 +417,9 @@ void tst_QSqlQueryModel::record()
QCOMPARE(rec.fieldName(0), isToUpper ? QString("ID") : QString("id"));
QCOMPARE(rec.fieldName(1), isToUpper ? QString("NAME") : QString("name"));
QCOMPARE(rec.fieldName(2), isToUpper ? QString("TITLE") : QString("title"));
- QCOMPARE(rec.value(0), QVariant(rec.field(0).type()));
- QCOMPARE(rec.value(1), QVariant(rec.field(1).type()));
- QCOMPARE(rec.value(2), QVariant(rec.field(2).type()));
+ QCOMPARE(rec.value(0), QVariant(rec.field(0).metaType()));
+ QCOMPARE(rec.value(1), QVariant(rec.field(1).metaType()));
+ QCOMPARE(rec.value(2), QVariant(rec.field(2).metaType()));
rec = model.record(0);
QCOMPARE(rec.fieldName(0), isToUpper ? QString("ID") : QString("id"));
diff --git a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
index 19d8430118..4fd4f1559d 100644
--- a/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
+++ b/tests/auto/sql/models/qsqlrelationaltablemodel/tst_qsqlrelationaltablemodel.cpp
@@ -468,10 +468,10 @@ void tst_QSqlRelationalTableModel::insertRecord()
QVERIFY_SQL(model, select());
QSqlRecord rec;
- QSqlField f1("id", QVariant::Int);
- QSqlField f2("name", QVariant::String);
- QSqlField f3("title_key", QVariant::Int);
- QSqlField f4("another_title_key", QVariant::Int);
+ QSqlField f1("id", QMetaType(QMetaType::Int));
+ QSqlField f2("name", QMetaType(QMetaType::QString));
+ QSqlField f3("title_key", QMetaType(QMetaType::Int));
+ QSqlField f4("another_title_key", QMetaType(QMetaType::Int));
f1.setValue(7);
f2.setValue("test");
@@ -518,10 +518,10 @@ void tst_QSqlRelationalTableModel::setRecord()
QVERIFY_SQL(model, select());
QSqlRecord rec;
- QSqlField f1("id", QVariant::Int);
- QSqlField f2("name", QVariant::String);
- QSqlField f3("title_key", QVariant::Int);
- QSqlField f4("another_title_key", QVariant::Int);
+ QSqlField f1("id", QMetaType(QMetaType::Int));
+ QSqlField f2("name", QMetaType(QMetaType::QString));
+ QSqlField f3("title_key", QMetaType(QMetaType::Int));
+ QSqlField f4("another_title_key", QMetaType(QMetaType::Int));
f1.setValue(7);
f2.setValue("tester");
@@ -1417,9 +1417,9 @@ void tst_QSqlRelationalTableModel::whiteSpaceInIdentifiers()
QVERIFY_SQL(model, select());
QSqlRecord rec;
- QSqlField f1("id", QVariant::Int);
- QSqlField f2(db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName), QVariant::Int);
- QSqlField f3(db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName), QVariant::Int);
+ QSqlField f1("id", QMetaType(QMetaType::Int));
+ QSqlField f2(db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName), QMetaType(QMetaType::Int));
+ QSqlField f3(db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName), QMetaType(QMetaType::Int));
f1.setValue(3);
f2.setValue(2);
@@ -1445,9 +1445,9 @@ void tst_QSqlRelationalTableModel::whiteSpaceInIdentifiers()
model.setEditStrategy(QSqlTableModel::OnManualSubmit);
QSqlRecord recNew;
- QSqlField f1New("id", QVariant::Int);
- QSqlField f2New(db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName), QVariant::Int);
- QSqlField f3New(db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName), QVariant::Int);
+ QSqlField f1New("id", QMetaType(QMetaType::Int));
+ QSqlField f2New(db.driver()->escapeIdentifier("city key", QSqlDriver::FieldName), QMetaType(QMetaType::Int));
+ QSqlField f3New(db.driver()->escapeIdentifier("extra field", QSqlDriver::FieldName), QMetaType(QMetaType::Int));
f1New.setValue(4);
f2New.setValue(1);
diff --git a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
index f58fdc9bf9..a0aa011d0c 100644
--- a/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
+++ b/tests/auto/sql/models/qsqltablemodel/tst_qsqltablemodel.cpp
@@ -956,9 +956,9 @@ void tst_QSqlTableModel::insertMultiRecords()
QVERIFY(model.insertRow(2));
- QCOMPARE(model.data(model.index(2, 0)), QVariant(model.record().field(0).type()));
- QCOMPARE(model.data(model.index(2, 1)), QVariant(model.record().field(1).type()));
- QCOMPARE(model.data(model.index(2, 2)), QVariant(model.record().field(2).type()));
+ QCOMPARE(model.data(model.index(2, 0)), QVariant(model.record().field(0).metaType()));
+ QCOMPARE(model.data(model.index(2, 1)), QVariant(model.record().field(1).metaType()));
+ QCOMPARE(model.data(model.index(2, 2)), QVariant(model.record().field(2).metaType()));
QVERIFY(model.insertRow(3));
QVERIFY(model.insertRow(0));