fix(editor): trigger column completion after SELECT keyword

This commit is contained in:
_Mr丶s ゛😁®
2026-09-25 09:41:04 +08:00
committed by GitHub
parent 66682b12a6
commit 986faa7584
2 changed files with 19 additions and 0 deletions
@@ -1839,6 +1839,7 @@ export function shouldAutoOpenSqlCompletion(sql: string, cursor: number, options
function shouldAutoOpenColumnCompletion(context: SqlCompletionContext, sql: string, cursor: number, databaseType: DatabaseType | undefined): boolean {
if (!context.suggestColumns || context.referencedTables.length === 0) return false;
if (context.prefix.length > 0) return true;
if (context.selectListColumnContext) return true;
return isColumnCompletionExpressionStart(sql.slice(0, cursor), databaseType);
}
+18
View File
@@ -2093,6 +2093,24 @@ test("auto-opens column completion immediately after condition context whitespac
}
});
test("auto-opens column completion after SELECT and UPDATE column-list keywords", () => {
const cases = [
{ sql: "SELECT FROM public.users", cursor: "SELECT ".length },
{ sql: "UPDATE public.users SET WHERE id = 1", cursor: "UPDATE public.users SET ".length },
];
for (const { sql, cursor } of cases) {
assert.equal(shouldAutoOpenSqlCompletion(sql, cursor), true, sql);
const items = buildSqlCompletionItems(sql, cursor, { tables, columnsByTable });
assert.ok(
items.some((item) => item.type === "column" && item.label === "id"),
sql,
);
}
assert.equal(shouldAutoOpenSqlCompletion("SELECT ", "SELECT ".length), false);
});
test("does not auto-open column completion immediately after comparison operators", () => {
for (const sql of ["SELECT * FROM public.users WHERE id>", "SELECT * FROM public.users WHERE id> ", "SELECT * FROM public.users WHERE id = "]) {
assert.equal(shouldAutoOpenSqlCompletion(sql, sql.length), false, sql);