← Back to team overview

touch-packages team mailing list archive

[Bug 1271973] Re: Results from U1db.Query contain only indexed fields, not the whole document

 

Please ignore the previous, the changelog was erronous. This bug was
already fixed earlier, and the new u1db-qt release only contained
"Improve database init performance by adding transactions".

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