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