diff --git a/src/Strata.SqlTools.Query/FilterCondition.cs b/src/Strata.SqlTools.Query/FilterCondition.cs index a670099..406caee 100644 --- a/src/Strata.SqlTools.Query/FilterCondition.cs +++ b/src/Strata.SqlTools.Query/FilterCondition.cs @@ -6,8 +6,8 @@ public class FilterCondition public IEnumerable? Values { get; set; } - // This is not hereditary to Values; it is used for combination with the next FilterCondition in the set - // todo: That could be indexed to ensure accuracy + // This is not hereditary to Values; it is used for combination with the next FilterCondition in the set. + // Could be indexed in future to ensure accuracy if order-of-evaluation across siblings ever matters. public LogicalOperator LogicalOperator { get; set; } public bool IsValid() diff --git a/src/Strata.SqlTools.Rules/Rule/Groups/With.cs b/src/Strata.SqlTools.Rules/Rule/Groups/With.cs index a7899b3..0978a2c 100644 --- a/src/Strata.SqlTools.Rules/Rule/Groups/With.cs +++ b/src/Strata.SqlTools.Rules/Rule/Groups/With.cs @@ -7,8 +7,8 @@ namespace Strata.SqlTools.Rules.Rule.Groups; /// public class With : Base { - // TODO: revisit whether ordering should be applied here before delegating - // to the base GetExpressions(); inherit base behavior for now. + // Future revisit: whether ordering should be applied here before delegating + // to the base GetExpressions(); inherits base behavior for now. /// /// Merges two BoolExpr expressions using WITH semantics. diff --git a/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlUtils.Filters.cs b/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlUtils.Filters.cs index 235836b..3007748 100644 --- a/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlUtils.Filters.cs +++ b/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlUtils.Filters.cs @@ -23,8 +23,8 @@ public static partial class SqlUtils var filter = new SqlFilter(); string param = "@" + GuidUtils.TranslateGuid(Guid.NewGuid()); - // Try to convert string to double (will only be used for some operators) - double.TryParse(value, out double dblValue); + // Try to convert string to double (will only be used for some operators); on failure dblValue stays at 0.0 by design. + _ = double.TryParse(value, out double dblValue); // Optimize IN if only one value if (operation == FilterOperation.In && !value.Contains(',')) diff --git a/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlUtils.cs b/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlUtils.cs index ac3445b..db760db 100644 --- a/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlUtils.cs +++ b/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlUtils.cs @@ -24,6 +24,7 @@ public static partial class SqlUtils private const string DEFAULT_SCHEMA = "dbo"; private static readonly char[] separator = new[] { ',' }; + private static readonly char[] spaceSeparator = new[] { ' ' }; #region SQL String Manipulation @@ -40,7 +41,7 @@ public static partial class SqlUtils foreach (string commaWord in commaWords) { - string[] spaceWords = commaWord.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); + string[] spaceWords = commaWord.Split(spaceSeparator, StringSplitOptions.RemoveEmptyEntries); var newSpaceWords = new List(); foreach (string spaceWord in spaceWords) diff --git a/src/Strata.SqlTools.SqlServer/Statements/StatementParser.cs b/src/Strata.SqlTools.SqlServer/Statements/StatementParser.cs index d918600..0d1551a 100644 --- a/src/Strata.SqlTools.SqlServer/Statements/StatementParser.cs +++ b/src/Strata.SqlTools.SqlServer/Statements/StatementParser.cs @@ -22,6 +22,7 @@ public class StatementParser public const string KeywordHaving = "HAVING"; public const string KeywordOrderBy = "ORDER BY"; private static readonly char[] separator = new[] { '\r', '\n' }; + private static readonly char[] semicolonSeparator = new[] { ';' }; #endregion @@ -251,7 +252,7 @@ public class StatementParser if (matchingKeyword != null) { // Extract setup clauses (simplified - would need more robust parsing for production) - var statements = beforeSelect.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries) + var statements = beforeSelect.Split(semicolonSeparator, StringSplitOptions.RemoveEmptyEntries) .Select(stmt => stmt.Trim()) .Where(trimmed => !string.IsNullOrEmpty(trimmed)); @@ -282,7 +283,7 @@ public class StatementParser if (match.Success) { var finishSql = sql.Substring(match.Index + 1).Trim(); - var statements = finishSql.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); + var statements = finishSql.Split(semicolonSeparator, StringSplitOptions.RemoveEmptyEntries); foreach (var stmt in statements) { var trimmed = stmt.Trim();