touch-packages team mailing list archive
-
touch-packages team
-
Mailing list archive
-
Message #01072
[Bug 1271973] Re: Results from U1db.Query contain only indexed fields, not the whole document
This time the changelog of new u1db-qt got bloated by a missing tag, it
actually contained only the "Improve database init performance by adding
transactions".
And true, the bzr113 commit was indeed reverted earlier, so this bug is
still open.
** Changed in: u1db-qt (Ubuntu)
Status: Fix Released => Confirmed
--
You received this bug notification because you are a member of Ubuntu
Touch seeded packages, which is subscribed to u1db-qt in Ubuntu.
https://bugs.launchpad.net/bugs/1271973
Title:
Results from U1db.Query contain only indexed fields, not the whole
document
Status in U1DB Qt/ QML:
Confirmed
Status in “u1db-qt” package in Ubuntu:
Confirmed
Bug description:
Whe using U1db.Index and U1db.Query to query information from a U1db,
the results returned from a Query should be the entire document, and
instead they are a subset of the document containing only the indexed
fields.
Example code below. Observe that the left-hand ListView is showing
results, but those results are not the whole content of each document;
instead, they contain only the fields in the index. Index queries
should return the whole document. Otherwise queries are almost
useless; they are designed so that you can get a list of the documents
which match the query fields, not just the query fields which match
the query fields. Returning the value of the fields which match the
query is pointless: you must already know those values in order to
construct the query in the first place.
import QtQuick 2.0
import U1db 1.0 as U1db
Rectangle {
width: 600
height: 300
U1db.Database { id: db; path: "u1db-broken-query"; }
U1db.Document {
database: db; docId: "doc1"; create: true
defaults: { "topfield": { "subfield": "subvalue1" }, "toplevelfield": "topvalue1" }
}
U1db.Document {
database: db; docId: "doc2"; create: true
defaults: { "topfield": { "subfield": "subvalue2" }, "toplevelfield": "topvalue2" }
}
U1db.Index {
database: db
id: by_topfield_subfield
expression: ["topfield.subfield"]
}
U1db.Index {
database: db
id: by_toplevelfield
expression: ["toplevelfield.subfield"]
}
U1db.Query { id: qtopsub; index: by_topfield_subfield; query: [{subfield: "*"}] }
U1db.Query { id: qtoplevel; index: by_toplevelfield; query: [{toplevelfield: "*"}] }
Text {
id: h1
width: parent.width / 2
height: 50
anchors.left: parent.left
anchors.top: parent.top
horizontalAlignment: Text.AlignHCenter
text: "ListModel on topfield.subfield"
}
ListView {
anchors.top: h1.bottom
anchors.left: parent.left
width: h1.width
anchors.bottom: parent.bottom
model: qtopsub
delegate: Text {
text: JSON.stringify(model.contents)
}
}
Text {
id: h2
width: parent.width / 2
height: 50
anchors.right: parent.right
anchors.top: parent.top
horizontalAlignment: Text.AlignHCenter
text: "ListModel on toplevelfield"
}
ListView {
anchors.top: h2.bottom
anchors.right: parent.right
width: h2.width
anchors.bottom: parent.bottom
model: qtoplevel
delegate: Text {
text: JSON.stringify(model.contents)
}
}
}
To manage notifications about this bug go to:
https://bugs.launchpad.net/u1db-qt/+bug/1271973/+subscriptions