chore: refactor for sonarqube issues
SonarQube Analysis / sonarqube (pull_request) Successful in 6m3s
SonarQube Analysis / sonarqube (pull_request) Successful in 6m3s
This commit is contained in:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user