Exemplo n.º 1
0
        protected override QueryResult GetQueryResult()
        {
            session.IncrementRequestCount();
            var sp = Stopwatch.StartNew();

            while (true)
            {
                Trace.WriteLine(string.Format("Executing query '{0}' on index '{1}' in '{2}'",
                                              query, indexName, session.StoreIdentifier));
                var result = databaseCommands.Query(indexName, new IndexQuery
                {
                    Query         = query,
                    PageSize      = pageSize,
                    Start         = start,
                    Cutoff        = cutoff,
                    SortedFields  = orderByFields.Select(x => new SortedField(x)).ToArray(),
                    FieldsToFetch = projectionFields
                });
                if (waitForNonStaleResults && result.IsStale)
                {
                    if (sp.Elapsed > timeout)
                    {
                        sp.Stop();
                        throw new TimeoutException(string.Format("Waited for {0:#,#}ms for the query to return non stale result.", sp.ElapsedMilliseconds));
                    }
                    Trace.WriteLine(
                        string.Format("Stale query results on non stable query '{0}' on index '{1}' in '{2}', query will be retired",
                                      query, indexName, session.StoreIdentifier));
                    Thread.Sleep(100);
                    continue;
                }
                Trace.WriteLine(string.Format("Query returned {0}/{1} results", result.Results.Length, result.TotalResults));
                return(result);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        ///   Gets the query result.
        /// </summary>
        /// <returns></returns>
        protected virtual QueryResult GetQueryResult()
        {
            foreach (var documentQueryListener in queryListeners)
            {
                documentQueryListener.BeforeQueryExecuted(this);
            }
            theSession.IncrementRequestCount();
            var sp = Stopwatch.StartNew();

            while (true)
            {
                var query = theQueryText.ToString();

                Debug.WriteLine(string.Format("Executing query '{0}' on index '{1}' in '{2}'",
                                              query, indexName, theSession.StoreIdentifier));

                var indexQuery = GenerateIndexQuery(query);

                AddOperationHeaders(theDatabaseCommands.OperationsHeaders.Add);

                var result = theDatabaseCommands.Query(indexName, indexQuery, includes.ToArray());
                if (theWaitForNonStaleResults && result.IsStale)
                {
                    if (sp.Elapsed > timeout)
                    {
                        sp.Stop();
                        throw new TimeoutException(
                                  string.Format("Waited for {0:#,#}ms for the query to return non stale result.",
                                                sp.ElapsedMilliseconds));
                    }
                    Debug.WriteLine(
                        string.Format(
                            "Stale query results on non stable query '{0}' on index '{1}' in '{2}', query will be retried",
                            query, indexName, theSession.StoreIdentifier));
                    Thread.Sleep(100);
                    continue;
                }
                Debug.WriteLine(string.Format("Query returned {0}/{1} results", result.Results.Count,
                                              result.TotalResults));
                return(result);
            }
        }
Exemplo n.º 3
0
 public object ExecuteEmbedded(IDatabaseCommands commands)
 {
     return(commands.Query(queryOperation.IndexName, queryOperation.IndexQuery, includes.ToArray()));
 }
Exemplo n.º 4
0
 public Task <QueryResult> QueryAsync(string index, IndexQuery query, string[] includes, bool metadataOnly = false)
 {
     return(new CompletedTask <QueryResult>(databaseCommands.Query(index, query, includes, metadataOnly)));
 }