SQL/MySQL: don't use deprecated defines, cleanup

Replace plain int with enum 'enum_field_types' and don't use deprecated
MySQL type names.

Change-Id: I8a629ac1b4ad7d6d78604ff641b5b35397cd769c
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
(cherry picked from commit 4091d73af8fdc42b538d5bf82442f5e79b34ff1d)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
Christian Ehrlicher 2022-10-20 18:01:18 +02:00 committed by Qt Cherry-pick Bot
parent 252a29f716
commit 61c59f2d8b

View File

@ -181,59 +181,59 @@ static QSqlError qMakeError(const QString& err, QSqlError::ErrorType type,
}
static QMetaType qDecodeMYSQLType(int mysqltype, uint flags)
static QMetaType qDecodeMYSQLType(enum_field_types mysqltype, uint flags)
{
QMetaType::Type type;
switch (mysqltype) {
case FIELD_TYPE_TINY :
case MYSQL_TYPE_TINY:
type = (flags & UNSIGNED_FLAG) ? QMetaType::UChar : QMetaType::Char;
break;
case FIELD_TYPE_SHORT :
case MYSQL_TYPE_SHORT:
type = (flags & UNSIGNED_FLAG) ? QMetaType::UShort : QMetaType::Short;
break;
case FIELD_TYPE_LONG :
case FIELD_TYPE_INT24 :
case MYSQL_TYPE_LONG:
case MYSQL_TYPE_INT24:
type = (flags & UNSIGNED_FLAG) ? QMetaType::UInt : QMetaType::Int;
break;
case FIELD_TYPE_YEAR :
case MYSQL_TYPE_YEAR:
type = QMetaType::Int;
break;
case FIELD_TYPE_LONGLONG :
case MYSQL_TYPE_LONGLONG:
type = (flags & UNSIGNED_FLAG) ? QMetaType::ULongLong : QMetaType::LongLong;
break;
case FIELD_TYPE_FLOAT :
case FIELD_TYPE_DOUBLE :
case FIELD_TYPE_DECIMAL :
#if defined(FIELD_TYPE_NEWDECIMAL)
case FIELD_TYPE_NEWDECIMAL:
#endif
case MYSQL_TYPE_FLOAT:
case MYSQL_TYPE_DOUBLE:
case MYSQL_TYPE_DECIMAL:
case MYSQL_TYPE_NEWDECIMAL:
type = QMetaType::Double;
break;
case FIELD_TYPE_DATE :
case MYSQL_TYPE_DATE:
type = QMetaType::QDate;
break;
case FIELD_TYPE_TIME :
case MYSQL_TYPE_TIME:
// A time field can be within the range '-838:59:59' to '838:59:59' so
// use QString instead of QTime since QTime is limited to 24 hour clock
type = QMetaType::QString;
break;
case FIELD_TYPE_DATETIME :
case FIELD_TYPE_TIMESTAMP :
case MYSQL_TYPE_DATETIME:
case MYSQL_TYPE_TIMESTAMP:
type = QMetaType::QDateTime;
break;
case FIELD_TYPE_STRING :
case FIELD_TYPE_VAR_STRING :
case FIELD_TYPE_BLOB :
case FIELD_TYPE_TINY_BLOB :
case FIELD_TYPE_MEDIUM_BLOB :
case FIELD_TYPE_LONG_BLOB :
case FIELD_TYPE_GEOMETRY :
case MYSQL_TYPE_STRING:
case MYSQL_TYPE_VAR_STRING:
case MYSQL_TYPE_BLOB:
case MYSQL_TYPE_TINY_BLOB:
case MYSQL_TYPE_MEDIUM_BLOB:
case MYSQL_TYPE_LONG_BLOB:
case MYSQL_TYPE_GEOMETRY:
case MYSQL_TYPE_JSON:
type = (flags & BINARY_FLAG) ? QMetaType::QByteArray : QMetaType::QString;
break;
default:
case FIELD_TYPE_ENUM :
case FIELD_TYPE_SET :
case MYSQL_TYPE_ENUM:
case MYSQL_TYPE_SET:
type = QMetaType::QString;
break;
default: // needed because there are more enum values which are not available in all headers
type = QMetaType::QString;
break;
}
@ -243,7 +243,7 @@ static QMetaType qDecodeMYSQLType(int mysqltype, uint flags)
static QSqlField qToField(MYSQL_FIELD *field)
{
QSqlField f(QString::fromUtf8(field->name),
qDecodeMYSQLType(int(field->type), field->flags),
qDecodeMYSQLType(field->type, field->flags),
QString::fromUtf8(field->table));
f.setRequired(IS_NOT_NULL(field->flags));
f.setLength(field->length);
@ -262,7 +262,7 @@ static QSqlError qMakeStmtError(const QString& err, QSqlError::ErrorType type,
type, QString::number(mysql_stmt_errno(stmt)));
}
static bool qIsBlob(int t)
static bool qIsBlob(enum_field_types t)
{
return t == MYSQL_TYPE_TINY_BLOB
|| t == MYSQL_TYPE_BLOB
@ -271,7 +271,7 @@ static bool qIsBlob(int t)
|| t == MYSQL_TYPE_JSON;
}
static bool qIsTimeOrDate(int t)
static bool qIsTimeOrDate(enum_field_types t)
{
// *not* MYSQL_TYPE_TIME because its range is bigger than QTime
// (see above)