feat(mongodb): support find explain in the SQL editor

This commit is contained in:
Loc Nguyen authored and GitHub committed 2026-09-18 01:45:37 +08:00
1 parent 2e85c8b55d
commit a78fc48a7b
15 files changed
+290 -9

No files matched your search

@@ -24,6 +24,16 @@ describe("MongoDB shell statement risk", () => {
}
});
it.each(["", '"queryPlanner"', '"executionStats"', '"allPlansExecution"'])("treats find explain(%s) as read-only without hiding batch writes", (verbosity) => {
const explain = `db.demo.find({}).explain(${verbosity})`;
expect(classifySqlRisk(explain, { dialect: "mongodb" }).risk).toBe("read");
for (const sql of [`${explain}; db.demo.insertOne({active: true})`, `db.demo.insertOne({active: true}); ${explain}`]) {
const assessment = classifySqlRisk(sql, { dialect: "mongodb" });
expect(assessment.risk).toBe("write");
expect(assessment.statements.map((statement) => statement.risk)).toEqual(sql.startsWith(explain) ? ["read", "write"] : ["write", "read"]);
}
});
it("retains per-command assessments for shell batches", () => {
const assessment = classifySqlRisk('db.getCollection("demo").find({}); db.getCollection("demo").insertOne({"active": true})', { dialect: "mongodb" });
expect(assessment.risk).toBe("write");