🐛 fix(sqlserver): 修复普通查询结果被原生多结果集吃空

- 对只读 SQL 的原生多结果集空返回增加顺序回退兜底
- 避免 optional driver-agent 成功返回空结果时前端只剩日志无结果集
- 补充 SQLServer 读查询空结果回退回归测试
This commit is contained in:
Syngnat
2026-06-23 09:46:44 +08:00
parent 495a985ae1
commit e8cad189be
2 changed files with 85 additions and 0 deletions

View File

@@ -1000,6 +1000,13 @@ func (a *App) DBQueryMulti(config connection.ConnectionConfig, dbName string, qu
return connection.QueryResult{Success: false, Message: err.Error(), QueryID: queryID}
}
// 某些 optional driver-agent 的原生多结果集路径会异常返回“成功但无任何结果集”。
// 对只读查询这是不可信信号,回退到逐条执行可以避免普通 SELECT 在结果面板中被吃空。
if useNativeMultiResult && allReadOnly && results != nil && len(results) == 0 && len(resultMessages) == 0 {
logger.Warnf("DBQueryMulti 原生多结果集返回空结果,将回退逐条执行:%s SQL片段=%q", formatConnSummary(runConfig), sqlSnippet(query))
results = nil
}
// 驱动支持多结果集,直接返回
if results != nil {
return connection.QueryResult{Success: true, Data: results, Messages: resultMessages, QueryID: queryID}