summaryrefslogtreecommitdiffstats
path: root/src/plugins/sqldrivers/mimer/qsql_mimer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/sqldrivers/mimer/qsql_mimer.cpp')
-rw-r--r--src/plugins/sqldrivers/mimer/qsql_mimer.cpp238
1 files changed, 98 insertions, 140 deletions
diff --git a/src/plugins/sqldrivers/mimer/qsql_mimer.cpp b/src/plugins/sqldrivers/mimer/qsql_mimer.cpp
index 3037f10473..7f89e0a0d5 100644
--- a/src/plugins/sqldrivers/mimer/qsql_mimer.cpp
+++ b/src/plugins/sqldrivers/mimer/qsql_mimer.cpp
@@ -5,6 +5,7 @@
#include <qvariant.h>
#include <qmetatype.h>
#include <qdatetime.h>
+#include <qloggingcategory.h>
#include <qsqlerror.h>
#include <qsqlfield.h>
#include <qsqlindex.h>
@@ -30,12 +31,15 @@ Q_DECLARE_METATYPE(MimerStatement)
QT_BEGIN_NAMESPACE
+static Q_LOGGING_CATEGORY(lcMimer, "qt.sql.mimer")
+
enum class MimerColumnTypes {
Binary,
Clob,
Blob,
String,
Int,
+ Numeric,
Long,
Float,
Double,
@@ -157,6 +161,20 @@ static QSqlError qMakeError(const QString &err, const int errCode, QSqlError::Er
return QSqlError("QMIMER: "_L1 + err, msg, type, QString::number(errCode));
}
+static QString msgCouldNotGet(const char *type, int column)
+{
+ //: Data type, column
+ return QCoreApplication::translate("QMimerSQLResult",
+ "Could not get %1, column %2").arg(QLatin1StringView(type)).arg(column);
+}
+
+static QString msgCouldNotSet(const char *type, int column)
+{
+ //: Data type, parameter
+ return QCoreApplication::translate("QMimerSQLResult",
+ "Could not set %1, parameter %2").arg(QLatin1StringView(type)).arg(column);
+}
+
QMimerSQLDriver::QMimerSQLDriver(QObject *parent) : QSqlDriver(*new QMimerSQLDriverPrivate, parent)
{
}
@@ -207,7 +225,6 @@ static MimerColumnTypes mimerMapColumnTypes(int32_t t)
case MIMER_TIMESTAMP:
return MimerColumnTypes::Timestamp;
case MIMER_INTERVAL_DAY:
- case MIMER_DECIMAL:
case MIMER_INTERVAL_DAY_TO_HOUR:
case MIMER_INTERVAL_DAY_TO_MINUTE:
case MIMER_INTERVAL_DAY_TO_SECOND:
@@ -227,6 +244,10 @@ static MimerColumnTypes mimerMapColumnTypes(int32_t t)
case MIMER_UTF8:
case MIMER_DEFAULT_DATATYPE:
return MimerColumnTypes::String;
+ case MIMER_INTEGER:
+ case MIMER_DECIMAL:
+ case MIMER_FLOAT:
+ return MimerColumnTypes::Numeric;
case MIMER_BOOLEAN:
return MimerColumnTypes::Boolean;
case MIMER_T_BIGINT:
@@ -234,19 +255,17 @@ static MimerColumnTypes mimerMapColumnTypes(int32_t t)
case MIMER_NATIVE_BIGINT_NULLABLE:
case MIMER_NATIVE_BIGINT:
return MimerColumnTypes::Long;
- case MIMER_T_FLOAT:
- case MIMER_FLOAT:
- return MimerColumnTypes::Float;
case MIMER_NATIVE_REAL_NULLABLE:
case MIMER_NATIVE_REAL:
case MIMER_T_REAL:
+ return MimerColumnTypes::Float;
+ case MIMER_T_FLOAT:
case MIMER_NATIVE_DOUBLE_NULLABLE:
case MIMER_NATIVE_DOUBLE:
case MIMER_T_DOUBLE:
return MimerColumnTypes::Double;
case MIMER_NATIVE_INTEGER:
case MIMER_NATIVE_INTEGER_NULLABLE:
- case MIMER_INTEGER:
case MIMER_NATIVE_SMALLINT_NULLABLE:
case MIMER_NATIVE_SMALLINT:
case MIMER_T_INTEGER:
@@ -255,7 +274,7 @@ static MimerColumnTypes mimerMapColumnTypes(int32_t t)
case MIMER_UUID:
return MimerColumnTypes::Uuid;
default:
- qWarning() << "QMimerSQLDriver::mimerMapColumnTypes: Unknown data type: " << t;
+ qCWarning(lcMimer) << "QMimerSQLDriver::mimerMapColumnTypes: Unknown data type:" << t;
}
return MimerColumnTypes::Unknown;
}
@@ -292,6 +311,8 @@ static QMetaType::Type qDecodeMSQLType(int32_t t)
case MIMER_NCHAR_VARYING:
case MIMER_UTF8:
case MIMER_DEFAULT_DATATYPE:
+ case MIMER_INTEGER:
+ case MIMER_FLOAT:
return QMetaType::QString;
case MIMER_BOOLEAN:
return QMetaType::Bool;
@@ -300,19 +321,18 @@ static QMetaType::Type qDecodeMSQLType(int32_t t)
case MIMER_NATIVE_BIGINT_NULLABLE:
case MIMER_NATIVE_BIGINT:
return QMetaType::LongLong;
- case MIMER_T_FLOAT:
- case MIMER_FLOAT:
- return QMetaType::Float;
case MIMER_NATIVE_REAL_NULLABLE:
case MIMER_NATIVE_REAL:
case MIMER_T_REAL:
+ return QMetaType::Float;
+ case MIMER_T_FLOAT:
case MIMER_NATIVE_DOUBLE_NULLABLE:
case MIMER_NATIVE_DOUBLE:
case MIMER_T_DOUBLE:
return QMetaType::Double;
case MIMER_NATIVE_INTEGER_NULLABLE:
case MIMER_T_INTEGER:
- case MIMER_INTEGER:
+ case MIMER_NATIVE_INTEGER:
return QMetaType::Int;
case MIMER_NATIVE_SMALLINT_NULLABLE:
case MIMER_T_SMALLINT:
@@ -327,7 +347,7 @@ static QMetaType::Type qDecodeMSQLType(int32_t t)
case MIMER_UUID:
return QMetaType::QUuid;
default:
- qWarning() << "QMimerSQLDriver::qDecodeMSQLType: Unknown data type: " << t;
+ qCWarning(lcMimer) << "QMimerSQLDriver::qDecodeMSQLType: Unknown data type:" << t;
return QMetaType::UnknownType;
}
}
@@ -393,7 +413,7 @@ static int32_t qLookupMimDataType(QStringView s)
if (s == u"DOUBLE PRECISION")
return MIMER_T_DOUBLE;
if (s == u"INTEGER")
- return MIMER_INTEGER;
+ return MIMER_T_INTEGER;
if (s == u"SMALLINT")
return MIMER_T_SMALLINT;
if (s == u"DATE")
@@ -406,7 +426,7 @@ static int32_t qLookupMimDataType(QStringView s)
return MIMER_UUID;
if (s == u"USER-DEFINED")
return MIMER_DEFAULT_DATATYPE;
- qWarning() << "QMimerSQLDriver::qLookupMimDataType: Unhandled data type: " << s;
+ qCWarning(lcMimer) << "QMimerSQLDriver::qLookupMimDataType: Unhandled data type:" << s;
return MIMER_DEFAULT_DATATYPE;
}
@@ -590,7 +610,7 @@ QVariant QMimerSQLResult::data(int i)
genericError, QSqlError::StatementError, nullptr));
return QVariant();
}
- mType = MimerParameterType(d->statementhandle, static_cast<std::int16_t>(i) + 1);
+ mType = MimerParameterType(d->statementhandle, static_cast<std::int16_t>(i + 1));
} else {
if (i >= MimerColumnCount(d->statementhandle)) {
setLastError(qMakeError(
@@ -599,23 +619,21 @@ QVariant QMimerSQLResult::data(int i)
genericError, QSqlError::StatementError, nullptr));
return QVariant();
}
- mType = MimerColumnType(d->statementhandle, static_cast<std::int16_t>(i) + 1);
+ mType = MimerColumnType(d->statementhandle, static_cast<std::int16_t>(i + 1));
}
const QMetaType::Type type = qDecodeMSQLType(mType);
const MimerColumnTypes mimDataType = mimerMapColumnTypes(mType);
- err = MimerIsNull(d->statementhandle, static_cast<std::int16_t>(i) + 1);
+ err = MimerIsNull(d->statementhandle, static_cast<std::int16_t>(i + 1));
if (err > 0) {
return QVariant(QMetaType(type), nullptr);
} else {
switch (mimDataType) {
case MimerColumnTypes::Date: {
wchar_t dateString_w[maxDateStringSize + 1];
- err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i) + 1, dateString_w,
+ err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i + 1), dateString_w,
sizeof(dateString_w) / sizeof(dateString_w[0]));
if (!MIMER_SUCCEEDED(err)) {
- setLastError(qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not get date, column %1")
- .arg(i),
+ setLastError(qMakeError(msgCouldNotGet("date", i),
err, QSqlError::StatementError, d->drv_d_func()));
return QVariant(QMetaType(type), nullptr);
}
@@ -623,12 +641,10 @@ QVariant QMimerSQLResult::data(int i)
}
case MimerColumnTypes::Time: {
wchar_t timeString_w[maxTimeStringSize + 1];
- err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i) + 1, timeString_w,
+ err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i + 1), timeString_w,
sizeof(timeString_w) / sizeof(timeString_w[0]));
if (!MIMER_SUCCEEDED(err)) {
- setLastError(qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not get time, column %1")
- .arg(i),
+ setLastError(qMakeError(msgCouldNotGet("time", i),
err, QSqlError::StatementError, d->drv_d_func()));
return QVariant(QMetaType(type), nullptr);
}
@@ -642,14 +658,12 @@ QVariant QMimerSQLResult::data(int i)
}
case MimerColumnTypes::Timestamp: {
wchar_t dateTimeString_w[maxTimestampStringSize + 1];
- err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i) + 1,
+ err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i + 1),
dateTimeString_w,
sizeof(dateTimeString_w) / sizeof(dateTimeString_w[0]));
if (!MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not get date time, column %1")
- .arg(i),
+ qMakeError(msgCouldNotGet("date time", i),
err, QSqlError::StatementError, d->drv_d_func()));
return QVariant(QMetaType(type), nullptr);
}
@@ -663,11 +677,9 @@ QVariant QMimerSQLResult::data(int i)
}
case MimerColumnTypes::Int: {
int resInt;
- err = MimerGetInt32(d->statementhandle, static_cast<std::int16_t>(i) + 1, &resInt);
+ err = MimerGetInt32(d->statementhandle, static_cast<std::int16_t>(i + 1), &resInt);
if (!MIMER_SUCCEEDED(err)) {
- setLastError(qMakeError(QCoreApplication::translate(
- "QMimerSQLResult", "Could not get int32, column %1")
- .arg(i),
+ setLastError(qMakeError(msgCouldNotGet("int32", i),
err, QSqlError::StatementError, d->drv_d_func()));
return QVariant(QMetaType(type), nullptr);
}
@@ -675,23 +687,19 @@ QVariant QMimerSQLResult::data(int i)
}
case MimerColumnTypes::Long: {
int64_t resLongLong;
- err = MimerGetInt64(d->statementhandle, static_cast<std::int16_t>(i) + 1, &resLongLong);
+ err = MimerGetInt64(d->statementhandle, static_cast<std::int16_t>(i + 1), &resLongLong);
if (!MIMER_SUCCEEDED(err)) {
- setLastError(qMakeError(QCoreApplication::translate(
- "QMimerSQLResult", "Could not get int64, column %1")
- .arg(i),
+ setLastError(qMakeError(msgCouldNotGet("int64", i),
err, QSqlError::StatementError, d->drv_d_func()));
return QVariant(QMetaType(type), nullptr);
}
- return QString::number(resLongLong).toLongLong();
+ return (qlonglong)resLongLong;
}
case MimerColumnTypes::Boolean: {
- err = MimerGetBoolean(d->statementhandle, static_cast<std::int16_t>(i) + 1);
+ err = MimerGetBoolean(d->statementhandle, static_cast<std::int16_t>(i + 1));
if (!MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not get boolean, column %1")
- .arg(i),
+ qMakeError(msgCouldNotGet("boolean", i),
err, QSqlError::StatementError, d->drv_d_func()));
return QVariant(QMetaType(type), nullptr);
}
@@ -699,11 +707,9 @@ QVariant QMimerSQLResult::data(int i)
}
case MimerColumnTypes::Float: {
float resFloat;
- err = MimerGetFloat(d->statementhandle, static_cast<std::int16_t>(i) + 1, &resFloat);
+ err = MimerGetFloat(d->statementhandle, static_cast<std::int16_t>(i + 1), &resFloat);
if (!MIMER_SUCCEEDED(err)) {
- setLastError(qMakeError(QCoreApplication::translate(
- "QMimerSQLResult", "Could not get float, column %1")
- .arg(i),
+ setLastError(qMakeError(msgCouldNotGet("float", i),
err, QSqlError::StatementError, d->drv_d_func()));
return QVariant(QMetaType(type), nullptr);
}
@@ -711,12 +717,10 @@ QVariant QMimerSQLResult::data(int i)
}
case MimerColumnTypes::Double: {
double resDouble;
- err = MimerGetDouble(d->statementhandle, static_cast<std::int16_t>(i) + 1, &resDouble);
+ err = MimerGetDouble(d->statementhandle, static_cast<std::int16_t>(i + 1), &resDouble);
if (!MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not get double, column %1")
- .arg(i),
+ qMakeError(msgCouldNotGet("double", i),
err, QSqlError::StatementError, d->drv_d_func()));
return QVariant(QMetaType(type), nullptr);
}
@@ -726,7 +730,7 @@ QVariant QMimerSQLResult::data(int i)
case QSql::LowPrecisionInt64:
return static_cast<qint64>(resDouble);
case QSql::LowPrecisionDouble:
- return resDouble;
+ return static_cast<qreal>(resDouble);
case QSql::HighPrecision:
return QString::number(resDouble, 'g', 17);
}
@@ -735,17 +739,15 @@ QVariant QMimerSQLResult::data(int i)
case MimerColumnTypes::Binary: {
QByteArray byteArray;
// Get size
- err = MimerGetBinary(d->statementhandle, static_cast<std::int16_t>(i) + 1, NULL, 0);
+ err = MimerGetBinary(d->statementhandle, static_cast<std::int16_t>(i + 1), NULL, 0);
if (MIMER_SUCCEEDED(err)) {
byteArray.resize(err);
- err = MimerGetBinary(d->statementhandle, static_cast<std::int16_t>(i) + 1,
+ err = MimerGetBinary(d->statementhandle, static_cast<std::int16_t>(i + 1),
byteArray.data(), err);
}
if (!MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not get binary, column %1")
- .arg(i),
+ qMakeError(msgCouldNotGet("binary", i),
err, QSqlError::StatementError, d->drv_d_func()));
return QVariant(QMetaType(type), nullptr);
}
@@ -754,7 +756,7 @@ QVariant QMimerSQLResult::data(int i)
case MimerColumnTypes::Blob: {
QByteArray byteArray;
size_t size;
- err = MimerGetLob(d->statementhandle, static_cast<std::int16_t>(i) + 1, &size,
+ err = MimerGetLob(d->statementhandle, static_cast<std::int16_t>(i + 1), &size,
&d->lobhandle);
if (MIMER_SUCCEEDED(err)) {
constexpr size_t maxSize = lobChunkMaxSizeFetch;
@@ -768,53 +770,48 @@ QVariant QMimerSQLResult::data(int i)
byteArray.append(QByteArray::fromRawData(blobchar.data(), bytesToReceive));
left_to_return -= bytesToReceive;
if (!MIMER_SUCCEEDED(err)) {
- setLastError(qMakeError(
- QCoreApplication::translate("QMimerSQLResult",
- "Could not get blob, column %1")
- .arg(i),
+ setLastError(qMakeError(msgCouldNotGet("BLOB", i),
err, QSqlError::StatementError, d->drv_d_func()));
return QVariant(QMetaType(type), nullptr);
}
}
} else {
- setLastError(qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not get blob, column %1")
- .arg(i),
+ setLastError(qMakeError(msgCouldNotGet("BLOB", i),
err, QSqlError::StatementError, d->drv_d_func()));
return QVariant(QMetaType(type), nullptr);
}
return byteArray;
}
+ case MimerColumnTypes::Numeric:
case MimerColumnTypes::String: {
wchar_t resString_w[maxStackStringSize + 1];
// Get size
- err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i) + 1, resString_w,
+ err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i + 1), resString_w,
0);
if (MIMER_SUCCEEDED(err)) {
int size = err;
if (err <= maxStackStringSize) { // For smaller strings, use a small buffer for
// efficiency
- err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i) + 1,
+ err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i + 1),
resString_w, maxStackStringSize + 1);
if (MIMER_SUCCEEDED(err))
return QString::fromWCharArray(resString_w);
} else { // For larger strings, dynamically allocate memory
QVarLengthArray<wchar_t> largeResString_w(size + 1);
- err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i) + 1,
+ err = MimerGetString(d->statementhandle, static_cast<std::int16_t>(i + 1),
largeResString_w.data(), size + 1);
if (MIMER_SUCCEEDED(err))
return QString::fromWCharArray(largeResString_w.data());
}
}
- setLastError(qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not get string, column %1")
- .arg(i),
- err, QSqlError::StatementError, d->drv_d_func()));
+ setLastError(qMakeError(msgCouldNotGet(
+ mimDataType == MimerColumnTypes::Numeric ? "numeric" : "string", i),
+ err, QSqlError::StatementError, d->drv_d_func()));
return QVariant(QMetaType(type), nullptr);
}
case MimerColumnTypes::Clob: {
size_t size;
- err = MimerGetLob(d->statementhandle, static_cast<std::int16_t>(i) + 1, &size,
+ err = MimerGetLob(d->statementhandle, static_cast<std::int16_t>(i + 1), &size,
&d->lobhandle);
if (MIMER_SUCCEEDED(err)) {
constexpr size_t maxSize = lobChunkMaxSizeFetch;
@@ -829,29 +826,22 @@ QVariant QMimerSQLResult::data(int i)
returnString.append(QString::fromWCharArray(clobstring_w.data()));
left_to_return -= bytesToReceive;
if (!MIMER_SUCCEEDED(err)) {
- setLastError(qMakeError(
- QCoreApplication::translate("QMimerSQLResult",
- "Could not get clob, column %1")
- .arg(i),
+ setLastError(qMakeError(msgCouldNotGet("CLOB", i),
err, QSqlError::StatementError, d->drv_d_func()));
return QVariant(QMetaType(type), nullptr);
}
}
return returnString;
}
- setLastError(qMakeError(
- QCoreApplication::translate("QMimerSQLResult", "Could not get clob, column %1")
- .arg(i),
+ setLastError(qMakeError(msgCouldNotGet("CLOB", i),
err, QSqlError::StatementError, d->drv_d_func()));
return QVariant(QMetaType(type), nullptr);
}
case MimerColumnTypes::Uuid: {
unsigned char uuidChar[16];
- err = MimerGetUUID(d->statementhandle, static_cast<std::int16_t>(i) + 1, uuidChar);
+ err = MimerGetUUID(d->statementhandle, static_cast<std::int16_t>(i + 1), uuidChar);
if (!MIMER_SUCCEEDED(err)) {
- setLastError(qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not get uuid, column %1")
- .arg(i),
+ setLastError(qMakeError(msgCouldNotGet("UUID", i),
err, QSqlError::StatementError, d->drv_d_func()));
return QVariant(QMetaType(type), nullptr);
}
@@ -871,7 +861,7 @@ QVariant QMimerSQLResult::data(int i)
bool QMimerSQLResult::isNull(int index)
{
Q_D(const QMimerSQLResult);
- const int32_t rc = MimerIsNull(d->statementhandle, static_cast<std::int16_t>(index) + 1);
+ const int32_t rc = MimerIsNull(d->statementhandle, static_cast<std::int16_t>(index + 1));
if (!MIMER_SUCCEEDED(rc)) {
setLastError(qMakeError(
QCoreApplication::translate("QMimerSQLResult", "Could not check null, column %1")
@@ -924,12 +914,11 @@ QSqlRecord QMimerSQLResult::record() const
const int colSize = MimerColumnCount(d->statementhandle);
for (int i = 0; i < colSize; i++) {
wchar_t colName_w[100];
- MimerColumnName(d->statementhandle, static_cast<std::int16_t>(i) + 1, colName_w,
+ MimerColumnName(d->statementhandle, static_cast<std::int16_t>(i + 1), colName_w,
sizeof(colName_w) / sizeof(colName_w[0]));
field.setName(QString::fromWCharArray(colName_w));
- const int32_t mType = MimerColumnType(d->statementhandle, static_cast<std::int16_t>(i) + 1);
+ const int32_t mType = MimerColumnType(d->statementhandle, static_cast<std::int16_t>(i + 1));
const QMetaType::Type type = qDecodeMSQLType(mType);
- field.setSqlType(mType);
field.setMetaType(QMetaType(type));
field.setValue(QVariant(field.metaType()));
// field.setPrecision(); Should be implemented once the Mimer API can give this
@@ -1014,9 +1003,7 @@ bool QMimerSQLResult::exec()
err = MimerSetNull(d->statementhandle, i + 1);
if (!MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not set null, parameter %1")
- .arg(i),
+ qMakeError(msgCouldNotSet("null", i),
err, QSqlError::StatementError, d->drv_d_func()));
return false;
}
@@ -1031,9 +1018,7 @@ bool QMimerSQLResult::exec()
err = MimerSetInt32(d->statementhandle, i + 1, val.toInt(&convertOk));
if (!convertOk || !MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not set int32, parameter %1")
- .arg(i),
+ qMakeError(msgCouldNotSet("int32", i),
convertOk ? err : genericError, QSqlError::StatementError,
convertOk ? d->drv_d_func() : nullptr));
return false;
@@ -1045,9 +1030,7 @@ bool QMimerSQLResult::exec()
err = MimerSetInt64(d->statementhandle, i + 1, val.toLongLong(&convertOk));
if (!convertOk || !MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not set int64, parameter %1")
- .arg(i),
+ qMakeError(msgCouldNotSet("int64", i),
convertOk ? err : genericError, QSqlError::StatementError,
convertOk ? d->drv_d_func() : nullptr));
return false;
@@ -1059,9 +1042,7 @@ bool QMimerSQLResult::exec()
err = MimerSetFloat(d->statementhandle, i + 1, val.toFloat(&convertOk));
if (!convertOk || !MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not set float, parameter %1")
- .arg(i),
+ qMakeError(msgCouldNotSet("float", i),
convertOk ? err : genericError, QSqlError::StatementError,
convertOk ? d->drv_d_func() : nullptr));
return false;
@@ -1073,9 +1054,7 @@ bool QMimerSQLResult::exec()
err = MimerSetDouble(d->statementhandle, i + 1, val.toDouble(&convertOk));
if (!convertOk || !MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not set double, parameter %1")
- .arg(i),
+ qMakeError(msgCouldNotSet("double", i),
convertOk ? err : genericError, QSqlError::StatementError,
convertOk ? d->drv_d_func() : nullptr));
return false;
@@ -1088,9 +1067,7 @@ bool QMimerSQLResult::exec()
err = MimerSetBinary(d->statementhandle, i + 1, binArr.data(), size);
if (!MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not set binary, parameter %1")
- .arg(i),
+ qMakeError(msgCouldNotSet("binary", i),
err, QSqlError::StatementError, d->drv_d_func()));
return false;
}
@@ -1100,9 +1077,7 @@ bool QMimerSQLResult::exec()
err = MimerSetBoolean(d->statementhandle, i + 1, val.toBool() == true ? 1 : 0);
if (!MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate(
- "QMimerSQLResult", "Could not set boolean, parameter %1")
- .arg(i),
+ qMakeError(msgCouldNotSet("boolean", i),
err, QSqlError::StatementError, d->drv_d_func()));
return false;
}
@@ -1116,24 +1091,22 @@ bool QMimerSQLResult::exec()
err = MimerSetUUID(d->statementhandle, i + 1, uuid);
if (!MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not set UUID, parameter %1")
- .arg(i),
+ qMakeError(msgCouldNotSet("UUID", i),
err, QSqlError::StatementError, d->drv_d_func()));
return false;
}
break;
}
+ case MimerColumnTypes::Numeric:
case MimerColumnTypes::String: {
QByteArray string_b = val.toString().trimmed().toUtf8();
const char *string_u = string_b.constData();
err = MimerSetString8(d->statementhandle, i + 1, string_u);
if (!MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not set string, parameter %1")
- .arg(i),
- err, QSqlError::StatementError, d->drv_d_func()));
+ qMakeError(msgCouldNotSet(
+ mimDataType == MimerColumnTypes::Numeric ? "numeric" : "string", i),
+ err, QSqlError::StatementError, d->drv_d_func()));
return false;
}
break;
@@ -1142,9 +1115,7 @@ bool QMimerSQLResult::exec()
err = MimerSetString8(d->statementhandle, i + 1, val.toString().toUtf8().constData());
if (!MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not set date, parameter %1")
- .arg(i),
+ qMakeError(msgCouldNotSet("date", i),
err, QSqlError::StatementError, d->drv_d_func()));
return false;
}
@@ -1159,9 +1130,7 @@ bool QMimerSQLResult::exec()
timeVal.toString(timeFormatString).toUtf8().constData());
if (!MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not set time, parameter %1")
- .arg(i),
+ qMakeError(msgCouldNotSet("time", i),
err, QSqlError::StatementError, d->drv_d_func()));
return false;
}
@@ -1176,10 +1145,7 @@ bool QMimerSQLResult::exec()
d->statementhandle, i + 1,
val.toDateTime().toString(dateTimeFormatString).toUtf8().constData());
if (!MIMER_SUCCEEDED(err)) {
- setLastError(qMakeError(
- QCoreApplication::translate("QMimerSQLResult",
- "Could not set datetime, parameter %1")
- .arg(i),
+ setLastError(qMakeError(msgCouldNotSet("datetime", i),
err, QSqlError::StatementError, d->drv_d_func()));
return false;
}
@@ -1206,10 +1172,7 @@ bool QMimerSQLResult::exec()
}
if (!MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate(
- "QMimerSQLResult",
- "Could not set BLOB byte array, parameter %1")
- .arg(i),
+ qMakeError(msgCouldNotSet("BLOB byte array", i),
err, QSqlError::StatementError, d->drv_d_func()));
return false;
}
@@ -1218,10 +1181,7 @@ bool QMimerSQLResult::exec()
}
}
if (!MIMER_SUCCEEDED(err)) {
- setLastError(qMakeError(
- QCoreApplication::translate("QMimerSQLResult",
- "Could not set BLOB byte array, parameter %1")
- .arg(i),
+ setLastError(qMakeError(msgCouldNotSet("BLOB byte array", i),
err, QSqlError::StatementError, d->drv_d_func()));
return false;
}
@@ -1258,10 +1218,7 @@ bool QMimerSQLResult::exec()
pos += maxSize - step_back;
}
if (!MIMER_SUCCEEDED(err)) {
- setLastError(qMakeError(
- QCoreApplication::translate("QMimerSQLResult",
- "Could not set CLOB, parameter %1")
- .arg(i),
+ setLastError(qMakeError(msgCouldNotSet("CLOB", i),
err, QSqlError::StatementError, d->drv_d_func()));
return false;
}
@@ -1272,9 +1229,7 @@ bool QMimerSQLResult::exec()
}
if (!MIMER_SUCCEEDED(err)) {
setLastError(
- qMakeError(QCoreApplication::translate("QMimerSQLResult",
- "Could not set CLOB, parameter %1")
- .arg(i),
+ qMakeError(msgCouldNotSet("CLOB", i),
err, QSqlError::StatementError, d->drv_d_func()));
return false;
}
@@ -1335,7 +1290,7 @@ bool QMimerSQLResult::execBatch(bool arrayBind)
if (bindValueType(i) == QSql::Out || bindValueType(i) == QSql::InOut) {
setLastError(qMakeError(QCoreApplication::translate(
"QMimerSQLResult",
- "Only input parameter can be used in batch operations"),
+ "Only input parameters can be used in batch operations"),
genericError, QSqlError::StatementError, nullptr));
d->execBatch = false;
return false;
@@ -1349,6 +1304,7 @@ bool QMimerSQLResult::execBatch(bool arrayBind)
err = MimerAddBatch(d->statementhandle);
if (!MIMER_SUCCEEDED(err)) {
setLastError(qMakeError(
+ //: %1 is the batch number
QCoreApplication::translate("QMimerSQLResult", "Could not add batch %1")
.arg(i),
err, QSqlError::StatementError, d->drv_d_func()));
@@ -1650,3 +1606,5 @@ void QMimerSQLDriverPrivate::splitTableQualifier(const QString &qualifiedName, Q
}
QT_END_NAMESPACE
+
+#include "moc_qsql_mimer.cpp"