fix(transfer): support gbase jdbc connections

This commit is contained in:
zipg authored and GitHub committed 2026-08-31 14:03:54 +08:00
1 parent 0c8b796c8c
commit d459628141
9 files changed
+240 -13

No files matched your search

@@ -135,6 +135,22 @@ describe("namespace options", () => {
).toEqual(["analytics"]);
});
it("falls back to the configured database when JDBC metadata returns no databases", () => {
expect(
databaseOptionsForConnection([], {
db_type: "jdbc",
database: "gbase_demo",
}),
).toEqual(["gbase_demo"]);
expect(
databaseOptionsForConnection([], {
db_type: "jdbc",
database_info: { currentDatabase: "gbase_from_metadata" },
}),
).toEqual(["gbase_from_metadata"]);
});
it("preserves visible database filtering for catalog-scoped transfer options", async () => {
mocks.listDorisCatalogDatabases.mockResolvedValue([{ name: "app" }, { name: "analytics" }]);
@@ -7,7 +7,7 @@ import { isInternalDorisCatalog } from "@/lib/database/databaseFeatureSupport";
import type { CatalogInfo, ConnectionConfig } from "@/types/database";
import * as api from "@/lib/backend/api";
type NamespaceOptionsConnection = Pick<ConnectionConfig, "database" | "db_type" | "driver_profile" | "visible_databases" | "visible_schemas">;
type NamespaceOptionsConnection = Pick<ConnectionConfig, "database" | "db_type" | "driver_profile" | "visible_databases" | "visible_schemas"> & Partial<Pick<ConnectionConfig, "database_info">>;
export function catalogDatabaseOptionsKey(connectionId: string, catalog: string): string {
return `${connectionId}:${catalog}`;
}
@@ -31,8 +31,10 @@ export function databaseAfterCatalogChange(currentDatabase: string, databaseOpti
return databaseOptions.includes(currentDatabase) ? currentDatabase : "";
}
export function databaseOptionsForConnection(databaseNames: string[], connection: Pick<ConnectionConfig, "db_type" | "visible_databases"> | undefined): string[] {
export function databaseOptionsForConnection(databaseNames: string[], connection: (Pick<ConnectionConfig, "db_type" | "visible_databases"> & Partial<Pick<ConnectionConfig, "database" | "database_info">>) | undefined): string[] {
const names = filterDatabaseNamesForConnection(databaseNames, connection);
const configuredDatabase = connection?.database?.trim() || connection?.database_info?.currentDatabase?.trim();
if (names.length === 0 && configuredDatabase) return [configuredDatabase];
if (names.length === 0 && usesTreeSchemaMode(connection?.db_type)) return [""];
return names;
}