fix(tdengine): keep database context when viewing tables

This commit is contained in:
zipg
2026-09-10 11:25:13 +08:00
committed by GitHub
parent 436dd7129f
commit 72bfd74e5e
2 changed files with 16 additions and 0 deletions
@@ -92,6 +92,19 @@ describe("jdbc dialect inference", () => {
).toBe("sqlserver");
});
it("detects TDengine JDBC connections and keeps the selected database in the object tree", () => {
const connection = {
db_type: "jdbc" as const,
connection_string: "jdbc:TAOS-RS://tdengine.example:6041/",
jdbc_driver_class: "com.taosdata.jdbc.rs.RestfulDriver",
};
expect(inferJdbcDialect(connection)).toBe("tdengine");
expect(effectiveDatabaseTypeForConnection(connection)).toBe("tdengine");
expect(connectionUsesDatabaseObjectTreeMode(connection)).toBe(false);
expect(connectionObjectTreeQuerySchema(connection, "dbx_test")).toBe("dbx_test");
});
it("keeps Phoenix as generic JDBC while preserving its schema tree", () => {
const connection = { db_type: "jdbc" as const, driver_profile: "phoenix" };
@@ -38,6 +38,7 @@ const JDBC_DIALECT_MATCHERS: Array<{ type: DatabaseType; patterns: RegExp[] }> =
{ type: "sqlserver", patterns: [/jdbc:sqlserver:/i, /sqlserver/i, /mssql/i] },
{ type: "oracle", patterns: [/jdbc:oracle:/i, /oracle/i] },
{ type: "clickhouse", patterns: [/jdbc:clickhouse:/i, /clickhouse/i] },
{ type: "tdengine", patterns: [/jdbc:taos(?:-rs|-ws)?:/i, /taosdata/i, /tdengine/i] },
{ type: "h2", patterns: [/jdbc:h2:/i, /\bh2\b/i] },
{ type: "sqlite", patterns: [/jdbc:sqlite:/i, /sqlite/i] },
{ type: "db2", patterns: [/jdbc:db2:/i, /\bdb2\b/i] },
@@ -214,6 +215,8 @@ export function connectionUsesDatabaseObjectTreeMode(connection?: JdbcDialectCon
const dialect = inferJdbcDialect(connection);
if (!dialect) return true;
if (dialect === "hive" || dialect === "trino") return false;
// TDengine exposes databases as the top-level namespace, without schemas.
if (dialect === "tdengine") return false;
if (dialect === "databend") return true;
return !usesTreeSchemaMode(dialect);
}