diff options
author | Andy Shaw <andy.shaw@qt.io> | 2017-05-19 15:31:46 +0200 |
---|---|---|
committer | Andy Shaw <andy.shaw@qt.io> | 2017-07-12 09:01:50 +0000 |
commit | 0843c6ca7fe604d8c44b9a81b8fcb072ab424172 (patch) | |
tree | e6784759b9dd8729d5bd179a38552170e084a723 /src/plugins/sqldrivers/ibase/qsql_ibase.cpp | |
parent | 9423be1f190bd7cdeb04add39f4ec621a33a3041 (diff) |
QSqlField: Add a means to see what the tablename is for a given field
When you are using a query that pulls from a number of different tables
then it can be ambiguous as to which table a particular field belongs to.
So this will make it possible to determine the table that a given field
belongs to if it is set.
Task-number: QTBUG-7170
Change-Id: I49b7890c0523d81272a153df3860df800ff853d5
Reviewed-by: Jesus Fernandez <Jesus.Fernandez@qt.io>
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/plugins/sqldrivers/ibase/qsql_ibase.cpp')
-rw-r--r-- | src/plugins/sqldrivers/ibase/qsql_ibase.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/plugins/sqldrivers/ibase/qsql_ibase.cpp b/src/plugins/sqldrivers/ibase/qsql_ibase.cpp index 6fd91b6b76..23a86e2266 100644 --- a/src/plugins/sqldrivers/ibase/qsql_ibase.cpp +++ b/src/plugins/sqldrivers/ibase/qsql_ibase.cpp @@ -1382,7 +1382,8 @@ QSqlRecord QIBaseResult::record() const for (int i = 0; i < d->sqlda->sqld; ++i) { v = d->sqlda->sqlvar[i]; QSqlField f(QString::fromLatin1(v.aliasname, v.aliasname_length).simplified(), - qIBaseTypeName2(v.sqltype, v.sqlscale < 0)); + qIBaseTypeName2(v.sqltype, v.sqlscale < 0), + QString::fromLatin1(v.relname, v.relname_length)); f.setLength(v.sqllen); f.setPrecision(qAbs(v.sqlscale)); f.setRequiredStatus((v.sqltype & 1) == 0 ? QSqlField::Required : QSqlField::Optional); @@ -1685,7 +1686,7 @@ QSqlRecord QIBaseDriver::record(const QString& tablename) const while (q.next()) { int type = q.value(1).toInt(); bool hasScale = q.value(3).toInt() < 0; - QSqlField f(q.value(0).toString().simplified(), qIBaseTypeName(type, hasScale)); + QSqlField f(q.value(0).toString().simplified(), qIBaseTypeName(type, hasScale), tablename); if(hasScale) { f.setLength(q.value(4).toInt()); f.setPrecision(qAbs(q.value(3).toInt())); @@ -1726,7 +1727,9 @@ QSqlIndex QIBaseDriver::primaryIndex(const QString &table) const "ORDER BY b.RDB$FIELD_POSITION")); while (q.next()) { - QSqlField field(q.value(1).toString().simplified(), qIBaseTypeName(q.value(2).toInt(), q.value(3).toInt() < 0)); + QSqlField field(q.value(1).toString().simplified(), + qIBaseTypeName(q.value(2).toInt(), q.value(3).toInt() < 0), + tablename); index.append(field); //TODO: asc? desc? index.setName(q.value(0).toString()); } |