fix(dameng): support primary key editing

This commit is contained in:
onenewcode authored and GitHub committed 2026-07-30 00:06:48 +08:00
1 parent 66f94f23f1
commit f80fdcdfa7
6 files changed
+778 -168

No files matched your search

@@ -43,6 +43,12 @@ describe("tableStructureCapabilities", () => {
expect(getTableStructureCapabilities("dameng", "dameng").comment).toBe(true);
});
it("enables alter primary key for Dameng without enabling it for Oracle", () => {
expect(getTableStructureCapabilities("dameng", "dameng").alterPrimaryKey).toBe(true);
expect(getTableStructureCapabilities("oracle", "oracle").alterPrimaryKey).toBe(false);
expect(getTableStructureCapabilities("oceanbase-oracle", "oceanbase-oracle").alterPrimaryKey).toBe(false);
});
it("uses local-only column reordering for editable databases without physical reorder support", () => {
for (const databaseType of ["sqlserver", "postgres", "sqlite", "oracle", "dameng", "duckdb", "informix"] as const) {
expect(supportsLocalTableColumnReorder(databaseType, databaseType)).toBe(true);
@@ -190,6 +190,13 @@ const oracleCapabilities = capabilities({
indexType: true,
});
// Dameng (DM8): ALTER TABLE ... DROP PRIMARY KEY / ADD PRIMARY KEY is official DDL.
// Keep separate from oracleCapabilities so UI cannot enable PK edit without BE drop SQL.
const damengCapabilities = capabilities({
...oracleCapabilities,
alterPrimaryKey: true,
});
const irisCapabilities = capabilities({
...oracleCapabilities,
// IRIS exposes %DESCRIPTION at definition time but cannot alter persisted descriptions.
@@ -323,7 +330,7 @@ const capabilityByType: Partial<Record<DatabaseType, TableStructureCapabilities>
duckdb: duckdbCapabilities,
sqlserver: sqlserverCapabilities,
oracle: oracleCapabilities,
dameng: oracleCapabilities,
dameng: damengCapabilities,
"oceanbase-oracle": oracleCapabilities,
iris: irisCapabilities,
yashandb: oracleCapabilities,