Beispiel #1
0
        public override unsafe IResultSet Execute()
        {
            if (Database == null)
            {
                throw new InvalidOperationException(CouchbaseLiteErrorMessage.InvalidQueryDBNull);
            }

            var options = C4QueryOptions.Default;
            var e       = (C4QueryEnumerator *)ThreadSafety.DoLockedBridge(err =>
            {
                if (_disposalWatchdog.IsDisposed)
                {
                    return(null);
                }

                var localOpts = options;
                return(NativeRaw.c4query_run(_c4Query, &localOpts, FLSlice.Null, err));
            });

            if (e == null)
            {
                return(new NullResultSet());
            }

            var retVal = new QueryResultSet(this, ThreadSafety, e, _columnNames);

            _history.Add(retVal);
            return(retVal);
        }
        public override unsafe IResultSet Execute()
        {
            if (Database == null)
            {
                throw new InvalidOperationException(CouchbaseLiteErrorMessage.InvalidQueryDBNull);
            }

            var fromImpl = FromImpl;

            if (SelectImpl == null || fromImpl == null)
            {
                throw new InvalidOperationException(CouchbaseLiteErrorMessage.InvalidQueryMissingSelectOrFrom);
            }

            var options   = C4QueryOptions.Default;
            var paramJson = Parameters.FLEncode();

            var e = (C4QueryEnumerator *)fromImpl.ThreadSafety.DoLockedBridge(err =>
            {
                if (_disposalWatchdog.IsDisposed)
                {
                    return(null);
                }

                if (_c4Query == null)
                {
                    Check();
                }

                var localOpts = options;
                return(NativeRaw.c4query_run(_c4Query, &localOpts, (FLSlice)paramJson, err));
            });

            paramJson.Dispose();

            if (e == null)
            {
                return(new NullResultSet());
            }

            var retVal = new QueryResultSet(this, fromImpl.ThreadSafety, e, _columnNames);

            _history.Add(retVal);
            return(retVal);
        }
 public Enumerator([NotNull] QueryResultSet parent)
 {
     _parent = parent;
     _enum   = _parent._c4Enum;
     WriteLog.To.Query.I(Tag, $"Beginning query enumeration ({(long) _enum:x})");
 }