fix(sqlserver): split KILL statement execution targets

Closes #5566
This commit is contained in:
t8y2 committed 2026-08-13 22:39:32 +00:00
1 parent 9b983441d7
commit 3d114c28e2
2 files changed
+14 -1

No files matched your search

@@ -1161,6 +1161,12 @@ describe("executableStatementRanges", () => {
it("returns executable SQL Server batches without GO delimiter lines", () => {
expect(rangeSqlTexts(executableStatementRanges("SELECT 1\nGO\nSELECT 2;", "sqlserver"))).toEqual(["SELECT 1", "SELECT 2"]);
});
it("keeps SQL Server KILL commands independent without semicolons", () => {
const sql = "EXEC sp_who_lock\nDBCC INPUTBUFFER(580)\nKILL 580";
expect(rangeSqlTexts(executableStatementRanges(sql, "sqlserver"))).toEqual(["EXEC sp_who_lock", "DBCC INPUTBUFFER(580)", "KILL 580"]);
});
});
describe("currentExecutableStatementRange", () => {
@@ -1442,6 +1448,13 @@ WHERE t2.product_name = '12345'
const candidates = buildExecutionCandidates(sql, indexOf(sql, "2"), "sqlserver");
expect(candidateSummaries(candidates)).toEqual(["cursor:SELECT 2", "all:SELECT 1\nGO\nSELECT 2;"]);
});
it("uses a trailing SQL Server KILL command as the current statement", () => {
const sql = "EXEC sp_who_lock\nDBCC INPUTBUFFER(580)\nKILL 580";
const candidates = buildExecutionCandidates(sql, indexOf(sql, "KILL"), "sqlserver");
expect(candidateSummaries(candidates)).toEqual(["cursor:KILL 580", `all:${sql}`]);
});
});
describe("hasMultipleExecutionTargets", () => {
@@ -237,7 +237,7 @@ const DATABASE_SOFT_STATEMENT_KEYWORDS: Partial<Record<DatabaseType, readonly st
sqlite: ["ATTACH", "DETACH", "REINDEX"],
duckdb: ["ATTACH", "DETACH", "EXPORT", "IMPORT", "INSTALL", "LOAD"],
clickhouse: ["ATTACH", "CHECK", "DETACH", "EXCHANGE", "KILL", "OPTIMIZE", "SYSTEM"],
sqlserver: ["BACKUP", "DBCC", "DENY", "RESTORE"],
sqlserver: ["BACKUP", "DBCC", "DENY", "KILL", "RESTORE"],
saphana: ["DO"],
oracle: ["FLASHBACK", "LOCK", "PURGE"],
dameng: ["FLASHBACK", "LOCK", "PURGE"],