From 37ca4c31ad6b58d409dc82b9a7d21a76a2e2382c Mon Sep 17 00:00:00 2001 From: t8y2 <1156263951@qq.com> Date: Fri, 21 Aug 2026 16:38:16 +0000 Subject: [PATCH] fix(oceanbase): expose Oracle-mode sequences in schema tree Closes #6895 --- .../databaseObjectCapabilities.spec.ts | 20 +++++++++++++++++++ .../database/databaseObjectCapabilities.ts | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/apps/desktop/src/lib/__tests__/database/databaseObjectCapabilities.spec.ts b/apps/desktop/src/lib/__tests__/database/databaseObjectCapabilities.spec.ts index 0e1b6e7863..50b1ce4e76 100644 --- a/apps/desktop/src/lib/__tests__/database/databaseObjectCapabilities.spec.ts +++ b/apps/desktop/src/lib/__tests__/database/databaseObjectCapabilities.spec.ts @@ -1,5 +1,6 @@ import { describe, expect, it } from "vitest"; import { customTypeCapabilities, databaseObjectCapabilities, normalizeSidebarObjectKind, sidebarObjectKindsForDatabase, supportsPackageMemberExpansion, supportsTypeObjectSource } from "@/lib/database/databaseObjectCapabilities"; +import { buildObjectGroupPlaceholderNodes } from "@/lib/table/tableTree"; describe("databaseObjectCapabilities", () => { it("exposes supported programmable objects for Dameng", () => { @@ -13,6 +14,25 @@ describe("databaseObjectCapabilities", () => { expect(sidebarObjectKindsForDatabase("postgres")).not.toContain("SYNONYM"); }); + it("exposes OceanBase Oracle sequences without widening Oracle or synonym support", () => { + const oceanBaseObjects = sidebarObjectKindsForDatabase("oceanbase-oracle"); + + expect(oceanBaseObjects).toEqual(["TABLE", "VIEW", "MATERIALIZED_VIEW", "PROCEDURE", "FUNCTION", "SEQUENCE", "PACKAGE", "PACKAGE_BODY"]); + expect(databaseObjectCapabilities("oceanbase-oracle").sourceReadable).toEqual(["VIEW", "MATERIALIZED_VIEW", "PROCEDURE", "FUNCTION", "SEQUENCE", "PACKAGE", "PACKAGE_BODY"]); + expect(oceanBaseObjects).not.toContain("SYNONYM"); + expect( + buildObjectGroupPlaceholderNodes({ + nodeId: "connection:database:APP", + connectionId: "connection", + database: "database", + schema: "APP", + objectTypes: oceanBaseObjects, + }).map((node) => node.type), + ).toEqual(["group-tables", "group-views", "group-materialized-views", "group-procedures", "group-functions", "group-sequences", "group-packages"]); + + expect(sidebarObjectKindsForDatabase("oracle")).toEqual(["TABLE", "VIEW", "MATERIALIZED_VIEW", "PROCEDURE", "FUNCTION", "SYNONYM", "PACKAGE", "PACKAGE_BODY"]); + }); + it("expands package members only for implemented database paths", () => { expect(supportsPackageMemberExpansion("oracle")).toBe(true); expect(supportsPackageMemberExpansion("xugu")).toBe(true); diff --git a/apps/desktop/src/lib/database/databaseObjectCapabilities.ts b/apps/desktop/src/lib/database/databaseObjectCapabilities.ts index dac7916dab..302db7a2a8 100644 --- a/apps/desktop/src/lib/database/databaseObjectCapabilities.ts +++ b/apps/desktop/src/lib/database/databaseObjectCapabilities.ts @@ -32,7 +32,7 @@ const VASTBASE_OBJECTS: SidebarObjectKind[] = ["TABLE", "VIEW", "MATERIALIZED_VI const POSTGRES_LIKE_OBJECTS: SidebarObjectKind[] = ["TABLE", "VIEW", "MATERIALIZED_VIEW", "PROCEDURE", "FUNCTION"]; const ORACLE_OBJECTS: SidebarObjectKind[] = ["TABLE", "VIEW", "MATERIALIZED_VIEW", "PROCEDURE", "FUNCTION", "SYNONYM", "PACKAGE", "PACKAGE_BODY"]; -const OCEANBASE_ORACLE_OBJECTS: SidebarObjectKind[] = ["TABLE", "VIEW", "MATERIALIZED_VIEW", "PROCEDURE", "FUNCTION", "PACKAGE", "PACKAGE_BODY"]; +const OCEANBASE_ORACLE_OBJECTS: SidebarObjectKind[] = ["TABLE", "VIEW", "MATERIALIZED_VIEW", "PROCEDURE", "FUNCTION", "SEQUENCE", "PACKAGE", "PACKAGE_BODY"]; const DAMENG_OBJECTS: SidebarObjectKind[] = ["TABLE", "VIEW", "MATERIALIZED_VIEW", "PROCEDURE", "FUNCTION", "SEQUENCE", "PACKAGE", "PACKAGE_BODY"]; const XUGU_OBJECTS: SidebarObjectKind[] = ["TABLE", "VIEW", "PROCEDURE", "FUNCTION", "TRIGGER", "SEQUENCE", "SYNONYM", "PACKAGE", "PACKAGE_BODY", "TYPE", "TYPE_BODY"]; const PACKAGE_MEMBER_EXPANSION_DATABASES = new Set(["oracle", "xugu"]);