From dc431df8c07dafda12d1de7f12e9e2a8c9815bc7 Mon Sep 17 00:00:00 2001 From: Christian Ehrlicher Date: Tue, 4 Jun 2024 21:42:53 +0200 Subject: [PATCH] SQL/IBase: add partial support for SQL_INT128 datatype The previous patch missed the handling of SQL_INT128 in qIBaseTypeName2(). This amends 373ae6cbd24cf0ddbed453e14b1f683e76c92bb5 Change-Id: I646bd5af23c14761195f9c1089dc4cbbe2e94790 Reviewed-by: Axel Spoerl Reviewed-by: Andreas Bacher (cherry picked from commit f6bb8f832442a2e70b3d4718fb06807cfe98511b) Reviewed-by: Qt Cherry-pick Bot --- src/plugins/sqldrivers/ibase/qsql_ibase.cpp | 4 ++++ tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/src/plugins/sqldrivers/ibase/qsql_ibase.cpp b/src/plugins/sqldrivers/ibase/qsql_ibase.cpp index 6df7aa95074..b50bfa41de0 100644 --- a/src/plugins/sqldrivers/ibase/qsql_ibase.cpp +++ b/src/plugins/sqldrivers/ibase/qsql_ibase.cpp @@ -199,6 +199,10 @@ static QMetaType::Type qIBaseTypeName2(int iType, bool hasScale) return (hasScale ? QMetaType::Double : QMetaType::Int); case SQL_INT64: return (hasScale ? QMetaType::Double : QMetaType::LongLong); +#ifdef IBASE_INT128_SUPPORTED + case SQL_INT128: + return (hasScale ? QMetaType::Double : QMetaType::LongLong); +#endif case SQL_FLOAT: case SQL_DOUBLE: return QMetaType::Double; diff --git a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp index 92bedfab06e..89033c30e03 100644 --- a/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp +++ b/tests/auto/sql/kernel/qsqlquery/tst_qsqlquery.cpp @@ -5063,8 +5063,8 @@ void tst_QSqlQuery::ibaseInt128() QCOMPARE(q2.value(0).metaType().id(), QMetaType::Double); QCOMPARE(q2.value(0).toDouble(), 40001.1234); QVERIFY_SQL(q2, next()); - QCOMPARE(q2.value(0).metaType().id(), QMetaType::Double); - QCOMPARE(q2.value(0).toDouble(), 12345.6789); + QCOMPARE(q2.value("price").metaType().id(), QMetaType::Double); + QCOMPARE(q2.value("price").toDouble(), 12345.6789); QVERIFY_SQL(q2, exec("SELECT sum(price) FROM " + ts.tableName())); QVERIFY_SQL(q2, next()); QCOMPARE(q2.value(0).metaType().id(), QMetaType::Double); @@ -5078,8 +5078,8 @@ void tst_QSqlQuery::ibaseInt128() QCOMPARE(q2.value(0).metaType().id(), QMetaType::QString); QCOMPARE(q2.value(0).toString(), "40001.1234"); QVERIFY_SQL(q2, next()); - QCOMPARE(q2.value(0).metaType().id(), QMetaType::QString); - QCOMPARE(q2.value(0).toString(), "12345.6789"); + QCOMPARE(q2.value("price").metaType().id(), QMetaType::QString); + QCOMPARE(q2.value("price").toString(), "12345.6789"); QVERIFY_SQL(q2, exec("SELECT sum(price) FROM " + ts.tableName())); QVERIFY_SQL(q2, next()); QCOMPARE(q2.value(0).metaType().id(), QMetaType::QString);