mirror of
https://github.com/Syngnat/GoNavi.git
synced 2026-08-04 12:57:39 +08:00
🐛 fix(query-editor): 补齐SQL Server冗余结果集过滤
- 为 SQL Server 原生多结果集缺失 statementIndex 的场景补齐结果归属 - 修复单条 SELECT 查询尾随 affectedRows 结果被误渲染为额外结果页签的问题 - 补充前后端回归测试并保持存储过程多结果集展示不变
This commit is contained in:
committed by
tianqijiuyun-latiao
parent
32c3ba017e
commit
2fb4851d1f
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user