@mongodb-js/explain-plan-helper 1.2.1 → 1.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/get-execution-stats.js +11 -1
- package/dist/get-execution-stats.js.map +1 -1
- package/dist/get-planner-info.js +1 -0
- package/dist/get-planner-info.js.map +1 -1
- package/dist/index.d.ts +40 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +46 -1
- package/dist/index.js.map +1 -1
- package/dist/utils.js +1 -0
- package/dist/utils.js.map +1 -1
- package/package.json +5 -5
|
@@ -69,13 +69,23 @@ const _getFindStats = (explain) => {
|
|
|
69
69
|
function sumArrayProp(arr, prop) {
|
|
70
70
|
return arr.reduce((acc, x) => acc + Number(x[prop] ?? 0), 0);
|
|
71
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
*
|
|
74
|
+
* @param stages List of all stages in the explain plan
|
|
75
|
+
* @param shard Shard name
|
|
76
|
+
* @returns Indexes used in the stages
|
|
77
|
+
*/
|
|
72
78
|
function getIndexesFromStages(stages, shard) {
|
|
73
79
|
return stages
|
|
74
80
|
.reduce((acc, x) => acc.concat(x?.indexesUsed ?? []), [])
|
|
75
81
|
.map((index) => ({ index, shard: shard ?? null, fields: {} }));
|
|
76
82
|
}
|
|
77
83
|
function getAggregationExecutionTime(stats, stages) {
|
|
78
|
-
return (
|
|
84
|
+
return (
|
|
85
|
+
// Aggregation execution time is either accessible as part of stats, or as
|
|
86
|
+
// the estimated time of the last stage as execution time for stages is
|
|
87
|
+
// accumulated: every next stage includes the time for the previous stages
|
|
88
|
+
stats.executionTimeMillis ??
|
|
79
89
|
stages[stages.length - 1]?.executionTimeMillisEstimate ??
|
|
80
90
|
0);
|
|
81
91
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-execution-stats.js","sourceRoot":"","sources":["../src/get-execution-stats.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"get-execution-stats.js","sourceRoot":"","sources":["../src/get-execution-stats.ts"],"names":[],"mappings":"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"}
|
package/dist/get-planner-info.js
CHANGED
|
@@ -27,6 +27,7 @@ const _getUnshardedAggregationPlanner = (explain) => {
|
|
|
27
27
|
return _getUnshardedFindPlanner(firstStage[cursorKey]);
|
|
28
28
|
};
|
|
29
29
|
const _getShardedAggregationPlanner = (explain) => {
|
|
30
|
+
// The first shard
|
|
30
31
|
const firstShardName = Object.keys(explain.shards)[0];
|
|
31
32
|
const firstShard = explain.shards[firstShardName];
|
|
32
33
|
if (firstShard.stages) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"get-planner-info.js","sourceRoot":"","sources":["../src/get-planner-info.ts"],"names":[],"mappings":";;;AAAA,mEAKgC;AAUzB,MAAM,cAAc,GAAG,CAAC,OAAc,EAAe,EAAE;IAC5D,MAAM,YAAY,GAAG,IAAA,6CAAoB,EAAC,OAAO,CAAC;QAChD,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC;QACjC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO;QACL,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,WAAW,EAAE,YAAY,CAAC,WAAW;KACtC,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,cAAc,kBASzB;AACF,MAAM,sBAAsB,GAAG,CAAC,OAAc,EAAS,EAAE;IACvD,OAAO,IAAA,oDAA2B,EAAC,OAAO,CAAC;QACzC,CAAC,CAAC,6BAA6B,CAAC,OAAO,CAAC;QACxC,CAAC,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF,MAAM,+BAA+B,GAAG,CAAC,OAAc,EAAS,EAAE;IAChE,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,IAAA,0CAAiB,EAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;KACjD;IACD,OAAO,wBAAwB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AACF,MAAM,6BAA6B,GAAG,CAAC,OAAc,EAAS,EAAE;
|
|
1
|
+
{"version":3,"file":"get-planner-info.js","sourceRoot":"","sources":["../src/get-planner-info.ts"],"names":[],"mappings":";;;AAAA,mEAKgC;AAUzB,MAAM,cAAc,GAAG,CAAC,OAAc,EAAe,EAAE;IAC5D,MAAM,YAAY,GAAG,IAAA,6CAAoB,EAAC,OAAO,CAAC;QAChD,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC;QACjC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7B,OAAO;QACL,SAAS,EAAE,YAAY,CAAC,SAAS;QACjC,WAAW,EAAE,YAAY,CAAC,WAAW;QACrC,WAAW,EAAE,YAAY,CAAC,WAAW;KACtC,CAAC;AACJ,CAAC,CAAC;AATW,QAAA,cAAc,kBASzB;AACF,MAAM,sBAAsB,GAAG,CAAC,OAAc,EAAS,EAAE;IACvD,OAAO,IAAA,oDAA2B,EAAC,OAAO,CAAC;QACzC,CAAC,CAAC,6BAA6B,CAAC,OAAO,CAAC;QACxC,CAAC,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC;AAC/C,CAAC,CAAC;AACF,MAAM,+BAA+B,GAAG,CAAC,OAAc,EAAS,EAAE;IAChE,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,IAAA,0CAAiB,EAAC,UAAU,CAAC,CAAC;IAChD,IAAI,CAAC,SAAS,EAAE;QACd,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;KACjD;IACD,OAAO,wBAAwB,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AACF,MAAM,6BAA6B,GAAG,CAAC,OAAc,EAAS,EAAE;IAC9D,kBAAkB;IAClB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;IAClD,IAAI,UAAU,CAAC,MAAM,EAAE;QACrB,OAAO,+BAA+B,CAAC,UAAU,CAAC,CAAC;KACpD;IACD,OAAO,wBAAwB,CAAC,UAAU,CAAC,CAAC;AAC9C,CAAC,CAAC;AACF,MAAM,eAAe,GAAG,CAAC,OAAc,EAAS,EAAE;IAChD,OAAO,IAAA,6CAAoB,EAAC,OAAO,CAAC;QAClC,CAAC,CAAC,sBAAsB,CAAC,OAAO,CAAC;QACjC,CAAC,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC;AACxC,CAAC,CAAC;AACF,MAAM,wBAAwB,GAAG,CAAC,OAAc,EAAS,EAAE;IACzD,OAAO,OAAO,CAAC,YAAY,CAAC;AAC9B,CAAC,CAAC;AACF,MAAM,sBAAsB,GAAG,CAAC,OAAc,EAAS,EAAE;IACvD,OAAO,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACpD,CAAC,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -37,12 +37,52 @@ export declare class ExplainPlan {
|
|
|
37
37
|
get numShards(): number;
|
|
38
38
|
get isClusteredScan(): boolean;
|
|
39
39
|
get indexType(): "COLLSCAN" | "CLUSTERED" | "UNAVAILABLE" | "MULTIPLE" | "COVERED" | "INDEX";
|
|
40
|
+
/**
|
|
41
|
+
* Walks the tree of execution stages from a given node (or root) and returns
|
|
42
|
+
* the first stage with the specified name, or null if no stage is found.
|
|
43
|
+
* Equally-named children stage are traversed and returned in order.
|
|
44
|
+
* Returns null if legacyMode is true.
|
|
45
|
+
*
|
|
46
|
+
* @param {String} name - name of stage to return
|
|
47
|
+
* @param {Object} root - stage to start from. If unspecified, start from
|
|
48
|
+
* executionStages root node.
|
|
49
|
+
* @return {Object|null} - stage object or null
|
|
50
|
+
*/
|
|
40
51
|
findStageByName(name: string, root?: Stage): Stage | null;
|
|
52
|
+
/**
|
|
53
|
+
* Walks the tree of execution stages from a given node (or root) and returns
|
|
54
|
+
* an array of all stages with the specified name, or null if no stage is found.
|
|
55
|
+
* Returns null if legacyMode is true.
|
|
56
|
+
*
|
|
57
|
+
* @param {String} name - name of stage to return
|
|
58
|
+
* @param {Object} root - stage to start from. If unspecified, start from
|
|
59
|
+
* executionStages root node.
|
|
60
|
+
* @return {Array} - array of matching stage objects
|
|
61
|
+
*/
|
|
41
62
|
findAllStagesByName(name: string, root?: Stage): Stage[];
|
|
63
|
+
/** DFS stack iterator implementation */
|
|
42
64
|
_getStageIterator(root?: Stage): Iterable<Stage>;
|
|
43
65
|
serialize(): Pick<ExplainPlan, 'namespace' | 'parsedQuery' | 'executionSuccess' | 'nReturned' | 'executionTimeMillis' | 'totalKeysExamined' | 'totalDocsExamined' | 'originalExplainData' | 'executionStats' | 'usedIndexes' | 'isCovered' | 'isMultiKey' | 'inMemorySort' | 'isCollectionScan' | 'isSharded' | 'numShards' | 'indexType'>;
|
|
66
|
+
/**
|
|
67
|
+
* Returns child stage or stages of current stage as array. If there are
|
|
68
|
+
* no more child stages, returns empty array []. Also works for sharded
|
|
69
|
+
* explain plans (where shards are children). Not supported for legacy mode.
|
|
70
|
+
*
|
|
71
|
+
* @param {Object} stage - stage to get children of.
|
|
72
|
+
* @return {Array} - array of child stages.
|
|
73
|
+
*/
|
|
44
74
|
static getChildStages(stage?: Stage): Iterable<Stage>;
|
|
75
|
+
/**
|
|
76
|
+
* Recursively add a hidden property to all child stages
|
|
77
|
+
* that points to the parent, or `null` for the root stage.
|
|
78
|
+
* The list of parents can be iterated via getParentStages().
|
|
79
|
+
*/
|
|
45
80
|
static addParentStages(stage: Stage): void;
|
|
81
|
+
/**
|
|
82
|
+
* Iterator over all parent stages of a stage. Only works if
|
|
83
|
+
* ExplainPlan.addParentStages() has been called on a parent stage
|
|
84
|
+
* first. Does not yield the stage itself.
|
|
85
|
+
*/
|
|
46
86
|
static getParentStages(stage: Stage): Iterable<Stage>;
|
|
47
87
|
}
|
|
48
88
|
export {};
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,QAAA,MAAM,OAAO,eAAgC,CAAC;AAE9C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,OAAO,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,CACjE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GAC9B;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CACjC,CAAC;AAEF,qBAAa,WAAW;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,mBAAmB,EAAE,KAAK,CAAC;IAC3B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,EAAE,KAAK,CAAC;gBAEP,mBAAmB,EAAE,KAAK;IAqBtC,IAAI,WAAW,IAAI,gBAAgB,EAAE,CAmCpC;IAED,IAAI,SAAS,IAAI,OAAO,CASvB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,SAAS,IAAI,MAAM,CAItB;IAED,IAAI,eAAe,IAAI,OAAO,CAK7B;IAED,IAAI,SAAS,gFA+CZ;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,QAAA,MAAM,OAAO,eAAgC,CAAC;AAE9C,MAAM,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,OAAO,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC;CACzB,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,CACjE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GAC9B;IAAE,KAAK,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CACjC,CAAC;AAEF,qBAAa,WAAW;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,mBAAmB,EAAE,KAAK,CAAC;IAC3B,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,WAAW,EAAE,KAAK,CAAC;gBAEP,mBAAmB,EAAE,KAAK;IAqBtC,IAAI,WAAW,IAAI,gBAAgB,EAAE,CAmCpC;IAED,IAAI,SAAS,IAAI,OAAO,CASvB;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAED,IAAI,YAAY,IAAI,OAAO,CAE1B;IAED,IAAI,gBAAgB,IAAI,OAAO,CAE9B;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,IAAI,SAAS,IAAI,MAAM,CAItB;IAED,IAAI,eAAe,IAAI,OAAO,CAK7B;IAED,IAAI,SAAS,gFA+CZ;IAED;;;;;;;;;;OAUG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI;IASzD;;;;;;;;;OASG;IACH,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE;IAMxD,wCAAwC;IACvC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IAcjD,SAAS,IAAI,IAAI,CACf,WAAW,EACT,WAAW,GACX,aAAa,GACb,kBAAkB,GAClB,WAAW,GACX,qBAAqB,GACrB,mBAAmB,GACnB,mBAAmB,GACnB,qBAAqB,GACrB,gBAAgB,GAChB,aAAa,GACb,WAAW,GACX,YAAY,GACZ,cAAc,GACd,kBAAkB,GAClB,WAAW,GACX,WAAW,GACX,WAAW,CACd;IAwBD;;;;;;;OAOG;IACH,MAAM,CAAE,cAAc,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IA+BtD;;;;OAIG;IACH,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAQ1C;;;;OAIG;IACH,MAAM,CAAE,eAAe,CAAC,KAAK,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;CAMvD"}
|
package/dist/index.js
CHANGED
|
@@ -33,6 +33,7 @@ class ExplainPlan {
|
|
|
33
33
|
const ixscan = this.findAllStagesByName('IXSCAN');
|
|
34
34
|
const expressIxscan = this.findAllStagesByName('EXPRESS_IXSCAN');
|
|
35
35
|
const countScan = this.findAllStagesByName('COUNT_SCAN');
|
|
36
|
+
// special case for IDHACK stage, using the _id_ index.
|
|
36
37
|
const idhack = this.findStageByName('IDHACK');
|
|
37
38
|
const ret = this.executionStats?.stageIndexes ?? [];
|
|
38
39
|
for (const stage of [...ixscan, ...expressIxscan, ...countScan, idhack]) {
|
|
@@ -61,6 +62,7 @@ class ExplainPlan {
|
|
|
61
62
|
return ret.filter((indexInfo, index, arr) => arr.findIndex((i) => i.index === indexInfo.index && i.shard === indexInfo.shard) === index);
|
|
62
63
|
}
|
|
63
64
|
get isCovered() {
|
|
65
|
+
// @todo (thomas) implement for sharded explain plans
|
|
64
66
|
if (this.totalDocsExamined && this.totalDocsExamined > 0) {
|
|
65
67
|
return false;
|
|
66
68
|
}
|
|
@@ -92,6 +94,9 @@ class ExplainPlan {
|
|
|
92
94
|
}
|
|
93
95
|
get indexType() {
|
|
94
96
|
const indexes = this.usedIndexes;
|
|
97
|
+
// Currently the CLUSTERED_IXSCAN and EXPRESS_CLUSTERED_IXSCAN do not report
|
|
98
|
+
// any indexes in the winning stage. Even though the query clearly uses
|
|
99
|
+
// an index. And since we can't determine the index used, we will return CLUSTER.
|
|
95
100
|
if (this.isClusteredScan) {
|
|
96
101
|
return 'CLUSTERED';
|
|
97
102
|
}
|
|
@@ -111,7 +116,7 @@ class ExplainPlan {
|
|
|
111
116
|
if (indexNamesForAllShards[i].length !==
|
|
112
117
|
indexNamesForAllShards[j].length ||
|
|
113
118
|
indexNamesForAllShards[i].some((val, idx) => val !== indexNamesForAllShards[j][idx])) {
|
|
114
|
-
return 'MULTIPLE';
|
|
119
|
+
return 'MULTIPLE'; // As in, multiple index setups that differ between shards
|
|
115
120
|
}
|
|
116
121
|
}
|
|
117
122
|
}
|
|
@@ -123,6 +128,17 @@ class ExplainPlan {
|
|
|
123
128
|
}
|
|
124
129
|
return 'INDEX';
|
|
125
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Walks the tree of execution stages from a given node (or root) and returns
|
|
133
|
+
* the first stage with the specified name, or null if no stage is found.
|
|
134
|
+
* Equally-named children stage are traversed and returned in order.
|
|
135
|
+
* Returns null if legacyMode is true.
|
|
136
|
+
*
|
|
137
|
+
* @param {String} name - name of stage to return
|
|
138
|
+
* @param {Object} root - stage to start from. If unspecified, start from
|
|
139
|
+
* executionStages root node.
|
|
140
|
+
* @return {Object|null} - stage object or null
|
|
141
|
+
*/
|
|
126
142
|
findStageByName(name, root) {
|
|
127
143
|
for (const stage of this._getStageIterator(root)) {
|
|
128
144
|
if (stage.stage === name) {
|
|
@@ -131,9 +147,20 @@ class ExplainPlan {
|
|
|
131
147
|
}
|
|
132
148
|
return null;
|
|
133
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Walks the tree of execution stages from a given node (or root) and returns
|
|
152
|
+
* an array of all stages with the specified name, or null if no stage is found.
|
|
153
|
+
* Returns null if legacyMode is true.
|
|
154
|
+
*
|
|
155
|
+
* @param {String} name - name of stage to return
|
|
156
|
+
* @param {Object} root - stage to start from. If unspecified, start from
|
|
157
|
+
* executionStages root node.
|
|
158
|
+
* @return {Array} - array of matching stage objects
|
|
159
|
+
*/
|
|
134
160
|
findAllStagesByName(name, root) {
|
|
135
161
|
return [...this._getStageIterator(root)].filter((stage) => stage.stage === name);
|
|
136
162
|
}
|
|
163
|
+
/** DFS stack iterator implementation */
|
|
137
164
|
*_getStageIterator(root) {
|
|
138
165
|
const stage = root ?? this.executionStats?.executionStages ?? this.winningPlan;
|
|
139
166
|
if (!stage) {
|
|
@@ -165,6 +192,14 @@ class ExplainPlan {
|
|
|
165
192
|
indexType: this.indexType,
|
|
166
193
|
}));
|
|
167
194
|
}
|
|
195
|
+
/**
|
|
196
|
+
* Returns child stage or stages of current stage as array. If there are
|
|
197
|
+
* no more child stages, returns empty array []. Also works for sharded
|
|
198
|
+
* explain plans (where shards are children). Not supported for legacy mode.
|
|
199
|
+
*
|
|
200
|
+
* @param {Object} stage - stage to get children of.
|
|
201
|
+
* @return {Array} - array of child stages.
|
|
202
|
+
*/
|
|
168
203
|
static *getChildStages(stage) {
|
|
169
204
|
if (!stage) {
|
|
170
205
|
return;
|
|
@@ -194,6 +229,11 @@ class ExplainPlan {
|
|
|
194
229
|
yield* stage.inputStages;
|
|
195
230
|
}
|
|
196
231
|
}
|
|
232
|
+
/**
|
|
233
|
+
* Recursively add a hidden property to all child stages
|
|
234
|
+
* that points to the parent, or `null` for the root stage.
|
|
235
|
+
* The list of parents can be iterated via getParentStages().
|
|
236
|
+
*/
|
|
197
237
|
static addParentStages(stage) {
|
|
198
238
|
stage[kParent] = null;
|
|
199
239
|
for (const child of ExplainPlan.getChildStages(stage)) {
|
|
@@ -201,6 +241,11 @@ class ExplainPlan {
|
|
|
201
241
|
child[kParent] = stage;
|
|
202
242
|
}
|
|
203
243
|
}
|
|
244
|
+
/**
|
|
245
|
+
* Iterator over all parent stages of a stage. Only works if
|
|
246
|
+
* ExplainPlan.addParentStages() has been called on a parent stage
|
|
247
|
+
* first. Does not yield the stage itself.
|
|
248
|
+
*/
|
|
204
249
|
static *getParentStages(stage) {
|
|
205
250
|
let current = stage;
|
|
206
251
|
while ((current = current?.[kParent])) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,oFAA0D;AAC1D,yDAAoD;AACpD,+DAA0D;AAE1D,mCAA8C;AAE9C,MAAM,OAAO,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AAY9C,MAAa,WAAW;IAYtB,YAAY,mBAA0B;QACpC,MAAM,gBAAgB,GAAG,IAAA,gCAAoB,EAAC,mBAAmB,CAAC,CAAC;QACnE,MAAM,cAAc,GAAG,IAAA,uCAAiB,EAAC,gBAAgB,CAAC,CAAC;QAC3D,IAAI,cAAc,EAAE,eAAe,EAAE;YACnC,WAAW,CAAC,eAAe,CAAC,cAAc,CAAC,eAAe,CAAC,CAAC;SAC7D;QACD,MAAM,MAAM,GAAG,IAAA,iCAAc,EAAC,gBAAgB,CAAC,CAAC;QAChD,MAAM,MAAM,GACV,cAAc,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,cAAc,CAAC;QACjE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,gBAAgB,GAAG,MAAM,EAAE,gBAAgB,IAAI,KAAK,CAAC;QAC1D,IAAI,CAAC,SAAS,GAAG,cAAc,EAAE,SAAS,IAAI,IAAI,CAAC;QACnD,IAAI,CAAC,mBAAmB,GAAG,cAAc,EAAE,mBAAmB,IAAI,IAAI,CAAC;QACvE,IAAI,CAAC,iBAAiB,GAAG,cAAc,EAAE,iBAAiB,IAAI,IAAI,CAAC;QACnE,IAAI,CAAC,iBAAiB,GAAG,cAAc,EAAE,iBAAiB,IAAI,IAAI,CAAC;QACnE,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;IACxC,CAAC;IAED,IAAI,WAAW;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;QACjE,MAAM,SAAS,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.js
CHANGED
|
@@ -28,6 +28,7 @@ const shell_bson_parser_1 = __importStar(require("@mongodb-js/shell-bson-parser"
|
|
|
28
28
|
function getStageIndexFields(stage) {
|
|
29
29
|
if (stage.stage === 'EXPRESS_IXSCAN' &&
|
|
30
30
|
typeof stage.keyPattern === 'string') {
|
|
31
|
+
// For EXPRESS stages, the keyPattern is a string, which is not valid json.
|
|
31
32
|
try {
|
|
32
33
|
const result = (0, shell_bson_parser_1.default)(stage.keyPattern, { mode: shell_bson_parser_1.ParseMode.Loose });
|
|
33
34
|
return typeof result === 'string' ? {} : result;
|
package/dist/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mFAAiE;AAEjE,SAAgB,mBAAmB,CAAC,KAAY;IAC9C,IACE,KAAK,CAAC,KAAK,KAAK,gBAAgB;QAChC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EACpC;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mFAAiE;AAEjE,SAAgB,mBAAmB,CAAC,KAAY;IAC9C,IACE,KAAK,CAAC,KAAK,KAAK,gBAAgB;QAChC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,EACpC;QACA,2EAA2E;QAC3E,IAAI;YACF,MAAM,MAAM,GAAG,IAAA,2BAAK,EAAC,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,6BAAS,CAAC,KAAK,EAAE,CAAC,CAAC;YAClE,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;SACjD;QAAC,OAAO,CAAC,EAAE;YACV,OAAO,EAAE,CAAC;SACX;KACF;IACD,OAAO,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC;AAChC,CAAC;AAdD,kDAcC"}
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"email": "compass@mongodb.com"
|
|
14
14
|
},
|
|
15
15
|
"homepage": "https://github.com/mongodb-js/compass",
|
|
16
|
-
"version": "1.2.
|
|
16
|
+
"version": "1.2.3",
|
|
17
17
|
"repository": {
|
|
18
18
|
"type": "git",
|
|
19
19
|
"url": "https://github.com/mongodb-js/compass.git"
|
|
@@ -53,10 +53,10 @@
|
|
|
53
53
|
"mongodb-explain-compat": "^3.1.0"
|
|
54
54
|
},
|
|
55
55
|
"devDependencies": {
|
|
56
|
-
"@mongodb-js/eslint-config-compass": "^1.1.
|
|
57
|
-
"@mongodb-js/mocha-config-compass": "^1.4.
|
|
56
|
+
"@mongodb-js/eslint-config-compass": "^1.1.7",
|
|
57
|
+
"@mongodb-js/mocha-config-compass": "^1.4.2",
|
|
58
58
|
"@mongodb-js/prettier-config-compass": "^1.0.2",
|
|
59
|
-
"@mongodb-js/tsconfig-compass": "^1.0.
|
|
59
|
+
"@mongodb-js/tsconfig-compass": "^1.0.5",
|
|
60
60
|
"@types/chai": "^4.2.21",
|
|
61
61
|
"@types/mocha": "^9.0.0",
|
|
62
62
|
"@types/sinon-chai": "^3.2.5",
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
"sinon": "^9.2.3",
|
|
70
70
|
"typescript": "^5.0.4"
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "7bb0ec47c90909273d5cf0a63a39f12fc31e8d42"
|
|
73
73
|
}
|