fix(grid): reset scroll for replacement query results

Closes #5950
This commit is contained in:
t8y2 committed 2026-08-12 06:17:42 +00:00
1 parent c27a4dd83d
commit 143143a88d
9 files changed
+111 -12

No files matched your search

+13 -1
View File
@@ -1,7 +1,7 @@
import { beforeEach, describe, expect, it, vi } from "vitest";
import { createPinia, setActivePinia } from "pinia";
import { useConnectionStore } from "@/stores/connectionStore";
import { connectionGroupDisplayName, executionSummaryItems, middleEllipsis, queryResultBaseSql, queryResultExecutionSql, resultSourceRange, statementExecutionMarkers, tabTooltipLines, tabularResultItems } from "@/lib/tabs/tabPresentation";
import { connectionGroupDisplayName, executionSummaryItems, middleEllipsis, queryResultBaseSql, queryResultExecutionSql, resultGridCacheKey, resultGridInstanceKey, resultSourceRange, statementExecutionMarkers, tabTooltipLines, tabularResultItems } from "@/lib/tabs/tabPresentation";
import { sqlTextFingerprint } from "@/lib/sql/sqlTextFingerprint";
import type { ConnectionConfig, QueryTab } from "@/types/database";
@@ -133,6 +133,18 @@ describe("query result labels", () => {
});
});
describe("query result grid identity", () => {
it("separates rerun payloads while retaining run and result-set identity", () => {
const first = queryTab({ activeResultRunId: "run-1", activeResultIndex: 2, resultGridRevision: "execution-1" });
const rerun = queryTab({ activeResultRunId: "run-1", activeResultIndex: 2, resultGridRevision: "execution-2" });
expect(resultGridInstanceKey(first)).toBe("tab-1-run-1-2-execution-1");
expect(resultGridInstanceKey(rerun)).not.toBe(resultGridInstanceKey(first));
expect(resultGridInstanceKey({ ...first, activeResultIndex: 1 })).toBe("tab-1-run-1-1-execution-1");
expect(resultGridCacheKey(rerun)).toBe(resultGridCacheKey(first));
});
});
describe("tab group presentation", () => {
it("adds the full, live group path to tab tooltips", () => {
const store = useConnectionStore();
@@ -349,6 +349,10 @@ export function resultGridCacheKey(tab: Pick<QueryTab, "id" | "activeResultRunId
return `${tab.id}-${tab.activeResultRunId ?? "current"}-${tab.activeResultIndex ?? 0}`;
}
export function resultGridInstanceKey(tab: Pick<QueryTab, "id" | "activeResultRunId" | "activeResultIndex" | "resultGridRevision">): string {
return `${resultGridCacheKey(tab)}-${tab.resultGridRevision ?? "initial"}`;
}
export function nextExecutionSummaryView(currentView: OutputView, canShowResult: boolean): OutputView {
if (currentView === "summary" && canShowResult) return "result";
return "summary";