🐛 fix(query-editor): 补齐SQL Server冗余结果集过滤

- 为 SQL Server 原生多结果集缺失 statementIndex 的场景补齐结果归属
- 修复单条 SELECT 查询尾随 affectedRows 结果被误渲染为额外结果页签的问题
- 补充前后端回归测试并保持存储过程多结果集展示不变
This commit is contained in:
Syngnat
2026-06-24 11:57:19 +08:00
committed by tianqijiuyun-latiao
parent 32c3ba017e
commit 2fb4851d1f
4 changed files with 88 additions and 4 deletions

View File

@@ -3523,10 +3523,20 @@ const QueryEditor: React.FC<{ tab: TabData; isActive?: boolean }> = ({ tab, isAc
const maxRows = Number(queryOptions?.maxRows) || 0;
let anyTruncated = false;
const statementResultCounts = new Map<number, number>();
const resolveSourceStatementIndex = (rsData: any, idx: number): number => {
const explicitStatementIndex = Number(rsData?.statementIndex || 0);
if (explicitStatementIndex > 0) {
return explicitStatementIndex;
}
if (normalizedDbType === 'sqlserver' && sourceStatements.length === 1) {
return 1;
}
return idx + 1;
};
const sqlServerStatementsWithConcreteResults = new Set<number>();
if (normalizedDbType === 'sqlserver') {
resultSetDataArray.forEach((rsData, idx) => {
const sourceStatementIndex = Number(rsData?.statementIndex || idx + 1);
const sourceStatementIndex = resolveSourceStatementIndex(rsData, idx);
const resultMessages = normalizeQueryResultMessages(rsData?.messages);
if (hasConcreteQueryResultSetData(rsData, resultMessages)) {
sqlServerStatementsWithConcreteResults.add(sourceStatementIndex);
@@ -3539,7 +3549,7 @@ const QueryEditor: React.FC<{ tab: TabData; isActive?: boolean }> = ({ tab, isAc
for (let idx = 0; idx < resultSetDataArray.length; idx++) {
const rsData = resultSetDataArray[idx];
const sourceStatementIndex = Number(rsData?.statementIndex || idx + 1);
const sourceStatementIndex = resolveSourceStatementIndex(rsData, idx);
const plan = executablePlans[Math.max(0, sourceStatementIndex - 1)];
const originalSql = plan?.originalSql || '';
const executedSql = plan?.executedSql || originalSql;