Ejemplo n.º 1
0
        internal Result(QueryResultSet rs, C4QueryEnumerator *e, MContext context)
        {
            _rs             = rs;
            _context        = context;
            _columns        = e->columns;
            _missingColumns = new BitArray(BitConverter.GetBytes(e->missingColumns));
            _columnNames    = new Dictionary <string, int>(_rs.ColumnNames);
            foreach (var pair in _rs.ColumnNames)
            {
                if (pair.Value < _missingColumns.Length && _missingColumns.Get(pair.Value))
                {
                    _columnNames.Remove(pair.Key);
                }
            }

            _deserialized = new object[_rs.ColumnNames.Count];
            for (int i = 0; i < _rs.ColumnNames.Count; i++)
            {
                if (!_missingColumns.Get(i))
                {
                    _deserialized[i] = FleeceValueToObject(i);
                }
            }
        }
 public static extern C4SliceResult c4queryenum_customColumns(C4QueryEnumerator *e);
 public static long c4queryenum_getRowCount(C4QueryEnumerator *e, C4Error *outError) => Impl.c4queryenum_getRowCount(e, outError);
Ejemplo n.º 4
0
 public static extern void c4queryenum_free(C4QueryEnumerator *e);
Ejemplo n.º 5
0
 public static extern bool c4queryenum_seek(C4QueryEnumerator *e, ulong rowIndex, C4Error *outError);
Ejemplo n.º 6
0
 public QueryResultContext(Database db, C4QueryEnumerator *enumerator)
     : base(db, null)
 {
     _enumerator = enumerator;
 }
 internal QueryResultSet(QueryBase query, [NotNull] ThreadSafety threadSafety, C4QueryEnumerator *e,
                         IDictionary <string, int> columnNames)
 {
     _query        = query;
     _c4Enum       = e;
     ColumnNames   = columnNames;
     _threadSafety = threadSafety;
     _context      = new QueryResultContext(query?.Database, e);
 }
 public static string c4queryenum_fullTextMatched(C4QueryEnumerator *e, C4Error *outError)
 {
     using (var retVal = NativeRaw.c4queryenum_fullTextMatched(e, outError)) {
         return(((C4Slice)retVal).CreateString());
     }
 }
 public static void c4queryenum_free(C4QueryEnumerator *e) => Impl.c4queryenum_free(e);
 public static C4QueryEnumerator *c4queryenum_refresh(C4QueryEnumerator *e, C4Error *outError) => Impl.c4queryenum_refresh(e, outError);
 public static bool c4queryenum_next(C4QueryEnumerator *e, C4Error *outError) => Impl.c4queryenum_next(e, outError);
Ejemplo n.º 12
0
 public static extern void c4queryenum_release(C4QueryEnumerator *r);
Ejemplo n.º 13
0
 public static extern C4QueryEnumerator *c4queryenum_retain(C4QueryEnumerator *r);
 public static extern C4SliceResult c4queryenum_fullTextMatched(C4QueryEnumerator *e, C4Error *outError);
Ejemplo n.º 15
0
 public bool c4queryenum_next(C4QueryEnumerator *e, C4Error *outError) => Native.c4queryenum_next(e, outError);
 public static byte[] c4queryenum_customColumns(C4QueryEnumerator *e)
 {
     using (var retVal = NativeRaw.c4queryenum_customColumns(e)) {
         return(((C4Slice)retVal).ToArrayFast());
     }
 }
Ejemplo n.º 17
0
 public long c4queryenum_getRowCount(C4QueryEnumerator *e, C4Error *outError) => Native.c4queryenum_getRowCount(e, outError);
 public Enumerator([NotNull] QueryResultSet parent)
 {
     _parent = parent;
     _enum   = _parent._c4Enum;
     WriteLog.To.Query.I(Tag, $"Beginning query enumeration ({(long) _enum:x})");
 }
Ejemplo n.º 19
0
 public bool c4queryenum_seek(C4QueryEnumerator *e, ulong rowIndex, C4Error *outError) => Native.c4queryenum_seek(e, rowIndex, outError);
 public static extern long c4queryenum_getRowCount(C4QueryEnumerator *e, C4Error *outError);
Ejemplo n.º 21
0
 public C4QueryEnumerator *c4queryenum_refresh(C4QueryEnumerator *e, C4Error *outError) => Native.c4queryenum_refresh(e, outError);
Ejemplo n.º 22
0
 public static extern bool c4queryenum_next(C4QueryEnumerator *e, C4Error *outError);
Ejemplo n.º 23
0
 public void c4queryenum_free(C4QueryEnumerator *e) => Native.c4queryenum_free(e);
Ejemplo n.º 24
0
 public static extern C4QueryEnumerator *c4queryenum_refresh(C4QueryEnumerator *e, C4Error *outError);
Ejemplo n.º 25
0
        public void TestQueryFullTextIndex()
        {
            CreateFullTextIndex(3);

            // Search for "somewhere":
            C4Error            error;
            C4QueryEnumerator *e = Native.c4view_fullTextQuery(_view, "somewhere", C4Language.Default, null, &error);

            Assert.IsTrue(e != null);
            Assert.IsTrue(Native.c4queryenum_next(e, &error));
            Assert.IsTrue(e->docID.Equals("doc-001"));
            Assert.AreEqual(1UL, e->docSequence);
            Assert.AreEqual(1U, e->fullTextTermCount);
            Assert.AreEqual(0U, e->fullTextTerms[0].termIndex);
            Assert.AreEqual(8U, e->fullTextTerms[0].start);
            Assert.AreEqual(9U, e->fullTextTerms[0].length);

            Assert.IsFalse(Native.c4queryenum_next(e, &error));
            Assert.AreEqual(0, error.code);
            Native.c4queryenum_free(e);

            // Search for "cat":
            e = Native.c4view_fullTextQuery(_view, "cat", C4Language.Default, null, &error);
            Assert.IsTrue(e != null);
            int i = 0;

            foreach (var doc in new CBForestQueryEnumerator(e))
            {
                ++i;
                Assert.AreEqual(1U, doc.FullTextTermCount);
                Assert.AreEqual(0U, doc.GetFullTextTerm(0).termIndex);
                if (doc.DocSequence == 1)
                {
                    Assert.AreEqual(20U, doc.GetFullTextTerm(0).start);
                    Assert.AreEqual(4U, doc.GetFullTextTerm(0).length);
                }
                else
                {
                    Assert.AreEqual(3L, doc.DocSequence);
                    Assert.AreEqual(4U, doc.GetFullTextTerm(0).start);
                    Assert.AreEqual(3U, doc.GetFullTextTerm(0).length);
                }
            }

            Assert.AreEqual(0, error.code);
            Assert.AreEqual(2, i);

            // Search for "cat bark":
            e = Native.c4view_fullTextQuery(_view, "cat bark", C4Language.Default, null, &error);
            Assert.IsTrue(e != null);
            Assert.IsTrue(Native.c4queryenum_next(e, &error));
            Assert.IsTrue(e->docID.Equals("doc-001"));
            Assert.AreEqual(1UL, e->docSequence);
            Assert.AreEqual(2U, e->fullTextTermCount);
            Assert.AreEqual(0U, e->fullTextTerms[0].termIndex);
            Assert.AreEqual(20U, e->fullTextTerms[0].start);
            Assert.AreEqual(4U, e->fullTextTerms[0].length);
            Assert.AreEqual(1U, e->fullTextTerms[1].termIndex);
            Assert.AreEqual(29U, e->fullTextTerms[1].start);
            Assert.AreEqual(7U, e->fullTextTerms[1].length);

            Assert.IsFalse(Native.c4queryenum_next(e, &error));
            Assert.AreEqual(0, error.code);
            Native.c4queryenum_free(e);
        }
Ejemplo n.º 26
0
 public CBForestQueryEnumerator(C4QueryEnumerator *e)
 {
     _e = e;
 }
Ejemplo n.º 27
0
 public static extern void c4queryenum_close(C4QueryEnumerator *x);