private async Task Explain(DocumentsOperationContext context, HttpMethod method) { var indexQuery = await GetIndexQuery(context, method); var runner = new QueryRunner(Database, context); var explanations = runner.ExplainDynamicIndexSelection(indexQuery); using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { writer.WriteStartObject(); writer.WriteArray(context, "Results", explanations, (w, c, explanation) => { w.WriteExplanation(context, explanation); }); writer.WriteEndObject(); } }
private void Explain(DocumentsOperationContext context, string indexName) { var indexQuery = IndexQueryServerSide.Create(HttpContext, GetStart(), GetPageSize(Database.Configuration.Core.MaxPageSize), context); var runner = new QueryRunner(Database, context); var explanations = runner.ExplainDynamicIndexSelection(indexName, indexQuery); using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { var isFirst = true; writer.WriteStartArray(); foreach (var explanation in explanations) { if (isFirst == false) { writer.WriteComma(); } isFirst = false; writer.WriteExplanation(context, explanation); } writer.WriteEndArray(); } }