fix(sqlserver): preserve double-dot completion targets

This commit is contained in:
guoyongchang authored and GitHub committed 2026-07-31 19:33:18 +08:00
1 parent e1052333c1
commit 00927ac435
5 files changed
+115 -12

No files matched your search

@@ -82,6 +82,38 @@ describe("sqlCompletionLookupTarget", () => {
});
});
it("routes a SQL Server double-dot qualifier to the database's dbo schema", () => {
const sql = "select * from BarDB..ord";
const completionContext = getSqlCompletionContext(sql, sql.length, { databaseType: "sqlserver" });
expect(completionContext).toMatchObject({
prefix: "ord",
qualifier: "BarDB.dbo",
qualifierParts: ["BarDB", "dbo"],
});
expect(
resolveSqlCompletionTableLookupTarget({
currentDatabase: "FooDB",
currentSchema: "sales",
supportsDatabaseQualifier: false,
supportsDatabaseSchemaQualifier: true,
knownDatabases: ["FooDB", "BarDB"],
completionContext,
}),
).toEqual({
database: "BarDB",
schema: "dbo",
filter: "ord",
qualifierDatabase: "BarDB",
});
});
it.each(["postgres", "trino", "prestosql"] as const)("does not apply SQL Server double-dot semantics to %s", (databaseType) => {
const sql = "select * from BarDB..ord";
expect(getSqlCompletionContext(sql, sql.length, { databaseType }).qualifierParts).toBeUndefined();
});
it("keeps PostgreSQL schema completion in the current database", () => {
const target = resolveSqlCompletionTableLookupTarget({
currentDatabase: "app",