fix(sidebar): preserve MySQL data tabs on reopen
This commit is contained in:
2 files changed
+12
-1
No files matched your search
@@ -82,6 +82,16 @@ describe("dataTabOpenPolicy", () => {
|
|||||||
expect(findExistingDataTabCandidate([tab], usersTarget, { openMode: "default", reuseDataTab: false })).toEqual({ tab, match: "same-table" });
|
expect(findExistingDataTabCandidate([tab], usersTarget, { openMode: "default", reuseDataTab: false })).toEqual({ tab, match: "same-table" });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("ignores metadata query schemas for database-scoped tables", () => {
|
||||||
|
const tab = dataTab("users", "users");
|
||||||
|
tab.schema = undefined;
|
||||||
|
tab.tableMeta = { schema: "app", tableName: "users", columns: [], primaryKeys: [] };
|
||||||
|
const mysqlTarget = { connectionId: "conn", database: "app", tableName: "users" };
|
||||||
|
|
||||||
|
expect(canApplyDataTabMetadata(tab, mysqlTarget, new AbortController().signal)).toBe(true);
|
||||||
|
expect(findExistingDataTabCandidate([tab], mysqlTarget, { openMode: "default", reuseDataTab: false })).toEqual({ tab, match: "same-table" });
|
||||||
|
});
|
||||||
|
|
||||||
it("rejects metadata after its request is cancelled", () => {
|
it("rejects metadata after its request is cancelled", () => {
|
||||||
const tab = dataTab("users", "users");
|
const tab = dataTab("users", "users");
|
||||||
tab.tableMeta = { schema: "public", tableName: "users", columns: [], primaryKeys: [] };
|
tab.tableMeta = { schema: "public", tableName: "users", columns: [], primaryKeys: [] };
|
||||||
|
|||||||
@@ -34,7 +34,8 @@ function isSameDatabase(tab: DataTabLike, target: Pick<DataTabTarget, "connectio
|
|||||||
}
|
}
|
||||||
|
|
||||||
function isSameTable(tab: DataTabLike, target: DataTabTarget): boolean {
|
function isSameTable(tab: DataTabLike, target: DataTabTarget): boolean {
|
||||||
return isSameDatabase(tab, target) && (tab.tableMeta?.catalog || "") === (target.catalog || "") && (tab.schema || tab.tableMeta?.schema || "") === (target.schema || "") && (tab.tableMeta?.tableName || tab.title) === target.tableName;
|
const tabSchema = tab.schema || (target.schema ? tab.tableMeta?.schema : undefined) || "";
|
||||||
|
return isSameDatabase(tab, target) && (tab.tableMeta?.catalog || "") === (target.catalog || "") && tabSchema === (target.schema || "") && (tab.tableMeta?.tableName || tab.title) === target.tableName;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function canApplyDataTabMetadata(tab: DataTabLike | undefined, target: DataTabTarget, signal?: AbortSignal): boolean {
|
export function canApplyDataTabMetadata(tab: DataTabLike | undefined, target: DataTabTarget, signal?: AbortSignal): boolean {
|
||||||
|
|||||||
Reference in new issue
Block a user