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):
|
def qdump__QJsonObject(d, value):
|
||||||
qdumpHelper_QJsonObject(d, value['d'].pointer(), value['o'].pointer())
|
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 NetworkProfile {};
|
||||||
struct QmlProfile {};
|
struct QmlProfile {};
|
||||||
struct QmlPrivateProfile {};
|
struct QmlPrivateProfile {};
|
||||||
|
struct SqlProfile {};
|
||||||
|
|
||||||
struct NimProfile {};
|
struct NimProfile {};
|
||||||
|
|
||||||
@@ -817,6 +818,15 @@ public:
|
|||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const Data &operator+(const SqlProfile &) const
|
||||||
|
{
|
||||||
|
profileExtra += "QT += core sql\n";
|
||||||
|
|
||||||
|
useQt = true;
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
const Data &operator+(const BigArrayProfile &) const
|
const Data &operator+(const BigArrayProfile &) const
|
||||||
{
|
{
|
||||||
this->bigArray = true;
|
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")
|
+ RequiredMessage("Searching for type int (*)(int *) across all target modules, this could be very slow")
|
||||||
+ LldbEngine;
|
+ 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
|
#if 0
|
||||||
#ifdef Q_OS_LINUX
|
#ifdef Q_OS_LINUX
|
||||||
// Hint: To open a failing test in Creator, do:
|
// Hint: To open a failing test in Creator, do:
|
||||||
|
|||||||
Reference in New Issue
Block a user