feat(editor): support SQL Server cross-database completion

This commit is contained in:
zipg authored and GitHub committed 2026-07-22 15:08:44 +08:00
1 parent dfab2d09ed
commit 63dd0e88b5
19 files changed
+438 -75

No files matched your search

@@ -20,11 +20,24 @@ export function resolveSqlCompletionTableLookupTarget(options: {
currentDatabase: string;
currentSchema?: string;
supportsDatabaseQualifier: boolean;
completionContext: Pick<SqlCompletionContext, "qualifier" | "prefix" | "suggestTables" | "insertTable">;
supportsDatabaseSchemaQualifier?: boolean;
completionContext: Pick<SqlCompletionContext, "qualifier" | "qualifierParts" | "prefix" | "suggestTables" | "insertTable">;
knownDatabases?: readonly string[];
}): SqlCompletionTableLookupTarget {
const { completionContext } = options;
const qualifier = completionContext.qualifier?.trim();
const qualifierParts = completionContext.qualifierParts?.filter(Boolean) ?? qualifier?.split(".").filter(Boolean) ?? [];
if (options.supportsDatabaseSchemaQualifier && completionContext.suggestTables && !completionContext.insertTable && qualifierParts.length >= 2) {
const databaseQualifier = qualifierParts[qualifierParts.length - 2]!;
const schema = qualifierParts[qualifierParts.length - 1]!;
const database = findExactName(options.knownDatabases, databaseQualifier) ?? databaseQualifier;
return {
database,
schema,
filter: completionContext.prefix,
qualifierDatabase: database,
};
}
const qualifierIsDatabase = options.supportsDatabaseQualifier && !!qualifier && completionContext.suggestTables && !completionContext.insertTable;
if (qualifierIsDatabase) {