forked from qt-creator/qt-creator
Debugger: Add a dumper for QSqlField
Task-number: QTCREATORBUG-3905 Change-Id: I9290a9e46d7fa77417d58a3f81d4e4d680c751b6 Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
@@ -2691,3 +2691,37 @@ def qdump__QJsonArray(d, value):
|
||||
def qdump__QJsonObject(d, value):
|
||||
qdumpHelper_QJsonObject(d, value['d'].pointer(), value['o'].pointer())
|
||||
|
||||
|
||||
def qdump__QSqlResultPrivate(d, value):
|
||||
# QSqlResult *q_ptr;
|
||||
# QPointer<QSqlDriver> sqldriver;
|
||||
# int idx;
|
||||
# QString sql;
|
||||
# bool active;
|
||||
# bool isSel;
|
||||
# QSqlError error;
|
||||
# bool forwardOnly;
|
||||
# QSql::NumericalPrecisionPolicy precisionPolicy;
|
||||
# int bindCount;
|
||||
# QSqlResult::BindingSyntax binds;
|
||||
# QString executedQuery;
|
||||
# QHash<int, QSql::ParamType> types;
|
||||
# QVector<QVariant> values;
|
||||
# QHash<QString, QList<int> > indexes;
|
||||
# QVector<QHolder> holders
|
||||
vptr, qptr, sqldriver1, sqldriver2, idx, pad, sql, active, isSel, pad, \
|
||||
error1, error2, error3, \
|
||||
forwardOnly, pad, precisionPolicy, bindCount, \
|
||||
binds, executedQuery, types, values, indexes, holders = \
|
||||
value.split('ppppi@{QString}bb@pppb@iiii{QString}ppp')
|
||||
|
||||
d.putStringValue(sql)
|
||||
d.putPlainChildren(value)
|
||||
|
||||
|
||||
def qdump__QSqlField(d, value):
|
||||
val, dptr = value.split('{QVariant}p')
|
||||
d.putNumChild(1)
|
||||
qdump__QVariant(d, val)
|
||||
d.putBetterType(d.currentType.value.replace('QVariant', 'QSqlField'))
|
||||
d.putPlainChildren(value)
|
||||
|
||||
@@ -677,6 +677,7 @@ struct GuiPrivateProfile {};
|
||||
struct NetworkProfile {};
|
||||
struct QmlProfile {};
|
||||
struct QmlPrivateProfile {};
|
||||
struct SqlProfile {};
|
||||
|
||||
struct NimProfile {};
|
||||
|
||||
@@ -817,6 +818,15 @@ public:
|
||||
return *this;
|
||||
}
|
||||
|
||||
const Data &operator+(const SqlProfile &) const
|
||||
{
|
||||
profileExtra += "QT += core sql\n";
|
||||
|
||||
useQt = true;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
const Data &operator+(const BigArrayProfile &) const
|
||||
{
|
||||
this->bigArray = true;
|
||||
@@ -6532,6 +6542,30 @@ void tst_Dumpers::dumper_data()
|
||||
+ RequiredMessage("Searching for type int (*)(int *) across all target modules, this could be very slow")
|
||||
+ LldbEngine;
|
||||
|
||||
QTest::newRow("Sql")
|
||||
<< Data("#include <QSqlField>\n"
|
||||
"#include <QSqlDatabase>\n"
|
||||
"#include <QSqlQuery>\n"
|
||||
"#include <QSqlRecord>\n",
|
||||
"QSqlDatabase db = QSqlDatabase::addDatabase(\"QSQLITE\");\n"
|
||||
"db.setDatabaseName(\":memory:\");\n"
|
||||
"Q_ASSERT(db.open());\n"
|
||||
"QSqlQuery query;\n"
|
||||
"query.exec(\"create table images (itemid int, file varchar(20))\");\n"
|
||||
"query.exec(\"insert into images values(1, 'qt-logo.png')\");\n"
|
||||
"query.exec(\"insert into images values(2, 'qt-creator.png')\");\n"
|
||||
"query.exec(\"insert into images values(3, 'qt-project.png')\");\n"
|
||||
"query.exec(\"select * from images\");\n"
|
||||
"query.next();\n"
|
||||
"QSqlRecord rec = query.record();\n"
|
||||
"QSqlField f1 = rec.field(0);\n"
|
||||
"QSqlField f2 = rec.field(1);\n"
|
||||
"QSqlField f3 = rec.field(2);\n"
|
||||
"unused(&f1, &f2, &f3);\n")
|
||||
+ SqlProfile()
|
||||
+ Check("f1", "1", "@QSqlField (qlonglong)")
|
||||
+ Check("f2", "\"qt-logo.png\"", "@QSqlField (QString)")
|
||||
+ Check("f3", "(invalid)", "@QSqlField (invalid)");
|
||||
#if 0
|
||||
#ifdef Q_OS_LINUX
|
||||
// Hint: To open a failing test in Creator, do:
|
||||
|
||||
Reference in New Issue
Block a user