← Back to team overview

ubuntu-sdk-bugs team mailing list archive

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

 

This bug was fixed in the package u1db-qt -
0.1.5+14.04.20140313-0ubuntu1

---------------
u1db-qt (0.1.5+14.04.20140313-0ubuntu1) trusty; urgency=low

  [ CI bot ]
  * No change rebuild against Qt 5.2.1.

  [ Christian Dywan ]
  * Adopt xvfb.sh script from ui toolkit to run tests
  * Sort out build warnings and make them always fatal.
  * Implement Database.removeDoc method and use it in unit test
    Functionally this is equivalent to replacing the doc with an empty
    one. (LP: #1243395)
  * Use new-style qmlrunner log option to enable stdout.
  * Query improvements and more advanced example. (LP: #1271977,
    #1271972, #1266478)
  * Store whole document contents in the results and unit test that.
    (LP: #1271973)
  * Reverse query logic to check non-matching and internally convert
    between query syntaxes. (LP: #1284194, #1214538, #1215898)
  * Revert r113 and update unit test to verify previous behavior
 -- Ubuntu daily release <ps-jenkins@xxxxxxxxxxxxxxxxxxx>   Thu, 13 Mar 2014 23:12:40 +0000

** Changed in: u1db-qt (Ubuntu)
       Status: New => Fix Released

-- 
You received this bug notification because you are a member of Ubuntu
SDK bug tracking, 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:
  Fix Released

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