fix(zookeeper): drop unsupported sql query capability

Closes #8215
This commit is contained in:
t8y2 committed 2026-09-05 16:10:39 +08:00
1 parent 641f82c962
commit 0b9ddff19c
5 files changed
+49 -6

No files matched your search

@@ -5,12 +5,15 @@ import { buildGetDatabaseCommentSql } from "@/lib/database/dbAdminSql";
import {
defaultAutoCommitForDbType,
isSchemaAware,
supportsConnectionQueryActions,
supportsConnectionScopedQueryExecution,
supportsConnectionDatabaseBrowser,
supportsDatabaseNameCompletion,
supportsDatabaseSchemaQualifier,
supportsDatabaseSearch,
supportsObjectBrowser,
supportsObjectBrowserTreeNode,
supportsQueryExecution,
supportsQueryTargetDatabaseListing,
supportsQueryEditorBlockComments,
supportsSqlInListPaste,
@@ -81,6 +84,32 @@ describe("connection-scoped query targets", () => {
});
});
describe("connection query actions", () => {
it("keeps SQL query surfaces available for ordinary databases", () => {
expect(supportsConnectionQueryActions("mysql")).toBe(true);
expect(supportsConnectionQueryActions("postgres")).toBe(true);
expect(supportsConnectionQueryActions("redis")).toBe(true);
expect(supportsConnectionQueryActions(undefined)).toBe(true);
});
it("hides the sidebar new-query entry for specialized surfaces without a query engine", () => {
expect(supportsConnectionQueryActions("nacos")).toBe(false);
expect(supportsConnectionQueryActions("consul")).toBe(false);
expect(supportsConnectionQueryActions("hbase")).toBe(false);
expect(supportsConnectionQueryActions("zookeeper")).toBe(false);
});
});
describe("zookeeper query capabilities", () => {
it("does not advertise query execution or schema search for the kv-only agent", () => {
// The ZooKeeper agent exposes only kv_* operations: no list-databases or
// query method exists, so the manifest must not claim either capability
// (issue #8215: "new query" errored calling list-databases).
expect(supportsQueryExecution("zookeeper")).toBe(false);
expect(supportsDatabaseSearch("zookeeper")).toBe(false);
});
});
describe("database and schema qualifiers", () => {
it.each(["sqlserver", "trino", "prestosql"] as const)("supports three-part object names for %s", (databaseType) => {
expect(supportsDatabaseSchemaQualifier(databaseType)).toBe(true);
@@ -112,8 +112,14 @@ export function supportsClearableQuerySchema(dbType?: DatabaseType): boolean {
return !!dbType && CLEARABLE_QUERY_SCHEMA_TYPES.has(dbType);
}
/**
* ZooKeeper has no query surface: its agent implements only kv_* operations,
* so the sidebar "new query" flow would call list-databases and fail
* (issue #8215). It is excluded alongside the other specialized surfaces
* (nacos, consul, hbase) whose connection workbench replaces query tabs.
*/
export function supportsConnectionQueryActions(dbType?: DatabaseType): boolean {
return dbType !== "nacos" && dbType !== "consul" && dbType !== "hbase";
return dbType !== "nacos" && dbType !== "consul" && dbType !== "hbase" && dbType !== "zookeeper";
}
/**