[SERVER-14086] explain() doesn't display plan information if chosen query plan generates error Created: 29/May/14  Updated: 10/Dec/14  Resolved: 15/Oct/14

Status: Closed
Project: Core Server
Component/s: Diagnostics, Querying
Affects Version/s: None
Fix Version/s: None

Type: Improvement Priority: Major - P3
Reporter: J Rassi Assignee: David Storch
Resolution: Duplicate Votes: 0
Labels: explain
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Related
is related to SERVER-10448 Revamp explain() formatting Closed
Participants:

 Description   

When running an explain() against a query in which the chosen query plan generates an error, the explain output does not include any plan information. In this case, the explain output should indicate the chosen plan and the other plans considered.

Affects all released versions.

Reproduce with the following:

> x = ''
> for (i=0;i<1000;i++){x+='i'}
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii
> for (i=0;i<32*1024;i++){db.foo.insert({x:x}) }
> db.foo.find().sort({x:1}).explain()
Thu May 29 14:18:39.603 error: {
	"$err" : "Runner error: Overflow sort stage buffered data usage of 33555426 bytes exceeds internal limit of 33554432 bytes",
	"code" : 17144
} at src/mongo/shell/query.js:128
>

Note that, as of MongoDB 2.6, basic plan information is logged in case of an error:

2014-05-29T14:24:33.476-0400 [conn1] ERROR: Runner error, stats:
{ "type" : "SORT",
  "works" : 32330,
  "yields" : 252,
  "unyields" : 252,
  "invalidates" : 0,
  "advanced" : 0,
  "needTime" : 32328,
  "needFetch" : 0,
  "isEOF" : 0,
  "forcedFetches" : 0,
  "memUsage" : 33555426,
  "memLimit" : 33554432,
  "children" : [
    { "type" : "COLLSCAN",
      "works" : 32328,
      "yields" : 252,
      "unyields" : 252,
      "invalidates" : 0,
      "advanced" : 32327,
      "needTime" : 1,
      "needFetch" : 0,
      "isEOF" : 0,
      "docsTested" : 32327,
      "children" : [] } ] }
2014-05-29T14:24:33.497-0400 [conn1] assertion 17144 Runner error: Overflow sort stage buffered data usage of 33555426 bytes exceeds internal limit of 33554432 bytes ns:test.foo query:{ query: {}, orderby: { x: 1.0 }, $explain: true }



 Comments   
Comment by David Storch [ 15/Oct/14 ]

This will be fixed as part of explain changes under SERVER-10448. Closing as a duplicate.

Generated at Thu Feb 08 03:33:49 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.