chore: refactor for sonarqube issues
SonarQube Analysis / sonarqube (pull_request) Successful in 6m3s

This commit is contained in:
Thom Lamb
2026-05-22 17:13:31 -05:00
parent 063d5a7ba0
commit 012e693fe1
22 changed files with 522 additions and 461 deletions
@@ -491,38 +491,41 @@ public class QueryBreakdown : SqlBreakdownBase, IQueryBreakdown
continue;
}
// Recursively collect parameters from nested CTEs in the CTE's query
if (withClause.Query is QueryBreakdown cteQueryBreakdown)
{
cteQueryBreakdown.CollectCteParameters(allCollectedParams);
}
// Add the CTE's own parameters (TryAdd means main query params take precedence)
foreach (var param in withClause.Query.ParameterList)
{
var paramName = param.Name.StartsWith('@') ? param.Name : $"@{param.Name}";
allCollectedParams.TryAdd(paramName, param.Value);
}
CollectFromCteQuery(withClause.Query, allCollectedParams);
// For recursive CTEs, also collect parameters from the recursive query
if (withClause.IsRecursive && withClause.RecursiveQuery != null)
if (withClause.IsRecursive)
{
// Recursively collect parameters from nested CTEs in the recursive query
if (withClause.RecursiveQuery is QueryBreakdown recursiveQueryBreakdown)
{
recursiveQueryBreakdown.CollectCteParameters(allCollectedParams);
}
// Add the recursive query's own parameters
foreach (var param in withClause.RecursiveQuery.ParameterList)
{
var paramName = param.Name.StartsWith('@') ? param.Name : $"@{param.Name}";
allCollectedParams.TryAdd(paramName, param.Value);
}
CollectFromCteQuery(withClause.RecursiveQuery, allCollectedParams);
}
}
}
/// <summary>
/// Recursively collects parameters from a single CTE query and its nested CTEs.
/// Parameters are added with an '@' prefix via TryAdd, so existing entries take precedence.
/// </summary>
private static void CollectFromCteQuery(IQueryBreakdown? query, Dictionary<string, object> allCollectedParams)
{
if (query == null)
{
return;
}
// Recursively collect parameters from nested CTEs in this query
if (query is QueryBreakdown nestedQueryBreakdown)
{
nestedQueryBreakdown.CollectCteParameters(allCollectedParams);
}
// Add the query's own parameters (TryAdd means existing params take precedence)
foreach (var param in query.ParameterList)
{
var paramName = param.Name.StartsWith('@') ? param.Name : $"@{param.Name}";
allCollectedParams.TryAdd(paramName, param.Value);
}
}
/// <summary>
/// Gets all parameters including those from the CTE hierarchy.
/// The main query's parameters take precedence over CTE parameters with the same name.