fix(query): analyze multi-result editability per statement

This commit is contained in:
zipg authored and GitHub committed 2026-07-15 20:11:26 +08:00
1 parent 5b985b670d
commit 020d9869ac
2 files changed
+155 -1

No files matched your search

+12 -1
View File
@@ -165,6 +165,10 @@ function annotateQueryResultSource(result: QueryResult, sourceStatement: string,
return result;
}
function displayedQueryMetadataSql(tab: QueryTab, fallbackSql: string): string {
return tab.results?.length ? (tab.result?.sourceStatement ?? fallbackSql) : fallbackSql;
}
async function withFrontendQueryTimeout<T>(promise: Promise<T>, timeoutSecs: number, message: string): Promise<T> {
if (timeoutSecs === 0) return promise;
@@ -3241,7 +3245,9 @@ export const useQueryStore = defineStore("query", () => {
backendMs: current.result?.execution_time_ms,
elapsed: elapsed(),
});
if (current.mode === "query" && current.result) analyzeQueryMetadataInBackground(id, queryMetadataSql, current.result, traceId, elapsed, hiddenPrimaryKeys);
if (current.mode === "query" && current.result) {
analyzeQueryMetadataInBackground(id, displayedQueryMetadataSql(current, queryMetadataSql), current.result, traceId, elapsed, hiddenPrimaryKeys);
}
} else {
console.warn("[DBX][executeTabSql:stale-result]", {
traceId,
@@ -3593,6 +3599,11 @@ export const useQueryStore = defineStore("query", () => {
tab.queryEditabilityReason = undefined;
tab.mongoEditTarget = undefined;
syncActiveResultRunFromDisplayed(tab);
const sourceStatement = tab.result?.sourceStatement;
if (tab.mode === "query" && sourceStatement && splitMongoCommandRanges(sourceStatement).length === 0) {
const metadataStartedAt = performance.now();
analyzeQueryMetadataInBackground(id, sourceStatement, tab.result, uuid().slice(0, 8), () => `${Math.round(performance.now() - metadataStartedAt)}ms`);
}
}
function notifyConnectionMayBeLost() {