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";
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in new issue
Block a user