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:
hjk
2017-02-08 12:27:25 +01:00
parent b07f3afac6
commit af54ab960a
2 changed files with 68 additions and 0 deletions

View File

@@ -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)

View File

@@ -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: