fix(sqlserver): align insert hints with generated columns

This commit is contained in:
zipg authored and GitHub committed 2026-07-20 02:29:28 +08:00
1 parent f5cdbb8662
commit 49a1172469
14 files changed
+341 -81

No files matched your search

+1
View File
@@ -151,6 +151,7 @@ export const listCompletionObjects = forward("listCompletionObjects");
export const completionAssistantSearch = forward("completionAssistantSearch");
export const getObjectSource = forward("getObjectSource");
export const getColumns = forward("getColumns");
export const getSqlServerColumnMetadata = forward("getSqlServerColumnMetadata");
export const listDataTypes = forward("listDataTypes");
export const listIndexes = forward("listIndexes");
export const listForeignKeys = forward("listForeignKeys");
+5
View File
@@ -14,6 +14,7 @@ import type {
ObjectSource,
ObjectSourceKind,
ColumnInfo,
SqlServerColumnMetadata,
IndexInfo,
ForeignKeyInfo,
TriggerInfo,
@@ -640,6 +641,10 @@ export async function getColumns(connectionId: string, database: string, schema:
return get(`/api/schema/columns?${qs({ connection_id: connectionId, database, schema, table, catalog })}`);
}
export async function getSqlServerColumnMetadata(connectionId: string, database: string, schema: string, table: string): Promise<SqlServerColumnMetadata[]> {
return get(`/api/schema/sqlserver/column-metadata?${qs({ connection_id: connectionId, database, schema, table })}`);
}
export async function listDataTypes(connectionId: string, database: string): Promise<string[]> {
return get(`/api/schema/data-types?${qs({ connection_id: connectionId, database })}`);
}
+5
View File
@@ -17,6 +17,7 @@ import type {
ObjectSource,
ObjectSourceKind,
ColumnInfo,
SqlServerColumnMetadata,
IndexInfo,
ForeignKeyInfo,
TriggerInfo,
@@ -789,6 +790,10 @@ export async function getColumns(connectionId: string, database: string, schema:
return invoke("get_columns", { connectionId, database, schema, table, catalog });
}
export async function getSqlServerColumnMetadata(connectionId: string, database: string, schema: string, table: string): Promise<SqlServerColumnMetadata[]> {
return invoke("get_sqlserver_column_metadata", { connectionId, database, schema, table });
}
export async function listDataTypes(connectionId: string, database: string): Promise<string[]> {
return invoke("list_data_types", { connectionId, database });
}
@@ -0,0 +1,14 @@
import type { DatabaseType, SqlServerColumnMetadata } from "@/types/database";
type InsertValueHintColumn = Pick<SqlServerColumnMetadata, "name"> & Partial<Pick<SqlServerColumnMetadata, "is_identity" | "is_computed" | "is_hidden" | "generated_always_type">>;
export function insertValueHintColumnNames(databaseType: DatabaseType | undefined, columns: readonly InsertValueHintColumn[]): string[] {
return columns
.filter((column) => {
if (databaseType !== "sqlserver") return true;
// SQL Server reports computed and temporal period columns independently;
// check every structured flag so positional VALUES only maps writable columns.
return !column.is_identity && !column.is_computed && !column.is_hidden && (column.generated_always_type ?? 0) === 0;
})
.map((column) => column.name);
}