diff --git a/src/Strata.SqlTools.LinqToSql/Breakdowns/LinqQueryBreakdown.cs b/src/Strata.SqlTools.LinqToSql/Breakdowns/LinqQueryBreakdown.cs
index eac22d4..df6053e 100644
--- a/src/Strata.SqlTools.LinqToSql/Breakdowns/LinqQueryBreakdown.cs
+++ b/src/Strata.SqlTools.LinqToSql/Breakdowns/LinqQueryBreakdown.cs
@@ -580,7 +580,7 @@ public class LinqQueryBreakdown : QueryBreakdown
/// True if SELECT contains *; otherwise, false.
public bool SelectsAllColumns()
{
- return SelectClause?.Clause?.Contains("*") ?? false;
+ return SelectClause?.Clause?.Contains('*') ?? false;
}
///
diff --git a/src/Strata.SqlTools.LinqToSql/Visitors/LinqExpressionVisitor.cs b/src/Strata.SqlTools.LinqToSql/Visitors/LinqExpressionVisitor.cs
index 26b6391..01f8bd9 100644
--- a/src/Strata.SqlTools.LinqToSql/Visitors/LinqExpressionVisitor.cs
+++ b/src/Strata.SqlTools.LinqToSql/Visitors/LinqExpressionVisitor.cs
@@ -248,13 +248,13 @@ public class LinqExpressionVisitor : ExpressionVisitor
{
if (_isInWhereClause)
{
- _whereBuilder.Append("(");
+ _whereBuilder.Append('(');
Visit(node.Left);
_whereBuilder.Append($" {GetOperator(node.NodeType)} ");
Visit(node.Right);
- _whereBuilder.Append(")");
+ _whereBuilder.Append(')');
return node;
}
diff --git a/src/Strata.SqlTools.Markdown/Expressions/ExpressionGenerator.cs b/src/Strata.SqlTools.Markdown/Expressions/ExpressionGenerator.cs
index f9b5505..a74e8e2 100644
--- a/src/Strata.SqlTools.Markdown/Expressions/ExpressionGenerator.cs
+++ b/src/Strata.SqlTools.Markdown/Expressions/ExpressionGenerator.cs
@@ -366,7 +366,7 @@ public class ExpressionGenerator : IVisitor
{
return text;
}
- return text.Substring(0, maxLength) + "...";
+ return string.Concat(text.AsSpan(0, maxLength), "...");
}
#region IVisitor Implementation
@@ -583,7 +583,7 @@ public class ExpressionGenerator : IVisitor
{
var sb = new StringBuilder();
sb.AppendLine($"{Indent()}Function: {function.FunctionName}");
- if (function.Arguments.Any())
+ if (function.Arguments.Length != 0)
{
_indentLevel++;
sb.AppendLine($"{Indent()}Arguments:");
@@ -602,7 +602,7 @@ public class ExpressionGenerator : IVisitor
{
var sb = new StringBuilder();
sb.AppendLine($"{Indent()}Aggregate Function: {aggregateFunction.FunctionName}");
- if (aggregateFunction.Arguments.Any())
+ if (aggregateFunction.Arguments.Length != 0)
{
_indentLevel++;
sb.AppendLine($"{Indent()}Arguments:");
diff --git a/src/Strata.SqlTools.Markdown/SqlServer/QueryBreakdownGenerator.cs b/src/Strata.SqlTools.Markdown/SqlServer/QueryBreakdownGenerator.cs
index db32359..05bb1a2 100644
--- a/src/Strata.SqlTools.Markdown/SqlServer/QueryBreakdownGenerator.cs
+++ b/src/Strata.SqlTools.Markdown/SqlServer/QueryBreakdownGenerator.cs
@@ -201,7 +201,7 @@ public class QueryBreakdownGenerator
return text;
}
- return text.Substring(0, maxLength) + "...";
+ return string.Concat(text.AsSpan(0, maxLength), "...");
}
}
diff --git a/src/Strata.SqlTools.Markdown/SqlServer/SqlStatementGenerator.cs b/src/Strata.SqlTools.Markdown/SqlServer/SqlStatementGenerator.cs
index 23cceb8..8c00dc6 100644
--- a/src/Strata.SqlTools.Markdown/SqlServer/SqlStatementGenerator.cs
+++ b/src/Strata.SqlTools.Markdown/SqlServer/SqlStatementGenerator.cs
@@ -122,7 +122,7 @@ public class SqlStatementGenerator
return text;
}
- return text.Substring(0, maxLength) + "...";
+ return string.Concat(text.AsSpan(0, maxLength), "...");
}
///
diff --git a/src/Strata.SqlTools.PostgreSql/Statements/StatementExpressionParser.cs b/src/Strata.SqlTools.PostgreSql/Statements/StatementExpressionParser.cs
index 130dc86..fc3cf9e 100644
--- a/src/Strata.SqlTools.PostgreSql/Statements/StatementExpressionParser.cs
+++ b/src/Strata.SqlTools.PostgreSql/Statements/StatementExpressionParser.cs
@@ -129,7 +129,7 @@ public class StatementExpressionParser : SqlServerStatementExpressionParser
if (reader.TokenType == TokenType.String || reader.TokenType == TokenType.ColumnIdentifier)
{
- columnBuilder.Append(".").Append(reader.TokenValue);
+ columnBuilder.Append('.').Append(reader.TokenValue);
reader.Read();
}
else
@@ -191,7 +191,7 @@ public class StatementExpressionParser : SqlServerStatementExpressionParser
if (reader.TokenType == TokenType.ColumnIdentifier || reader.TokenType == TokenType.String)
{
- columnBuilder.Append(".").Append(reader.TokenValue);
+ columnBuilder.Append('.').Append(reader.TokenValue);
reader.Read();
}
else
diff --git a/src/Strata.SqlTools.Query/Value.cs b/src/Strata.SqlTools.Query/Value.cs
index c84325a..9672d29 100644
--- a/src/Strata.SqlTools.Query/Value.cs
+++ b/src/Strata.SqlTools.Query/Value.cs
@@ -11,7 +11,7 @@ public class Value
public IEnumerable FilterGroups { get; }
- public Value() : this(string.Empty, string.Empty, new int[0], new string[0], new CalculationFilterGroup[0])
+ public Value() : this(string.Empty, string.Empty, Array.Empty(), Array.Empty(), Array.Empty())
{
}
diff --git a/src/Strata.SqlTools.Snowflake/Breakdowns/ProcedureBreakdown.cs b/src/Strata.SqlTools.Snowflake/Breakdowns/ProcedureBreakdown.cs
index 4e79517..9db037b 100644
--- a/src/Strata.SqlTools.Snowflake/Breakdowns/ProcedureBreakdown.cs
+++ b/src/Strata.SqlTools.Snowflake/Breakdowns/ProcedureBreakdown.cs
@@ -55,7 +55,7 @@ public class ProcedureBreakdown : SqlServerProcedureBreakdown
sb.Append("CALL ");
sb.Append(ProcedureName.Clause);
- sb.Append("(");
+ sb.Append('(');
if (IsUsingParameters)
{
@@ -68,7 +68,7 @@ public class ProcedureBreakdown : SqlServerProcedureBreakdown
sb.Append(string.Join(", ", paramList));
}
- sb.Append(")");
+ sb.Append(')');
return sb.ToString();
}
diff --git a/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdown.cs b/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdown.cs
index 4ee4c10..4ab2451 100644
--- a/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdown.cs
+++ b/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdown.cs
@@ -141,7 +141,7 @@ public class QueryBreakdown : SqlServerQueryBreakdown
if (parameterName.StartsWith('@'))
{
- return ":" + parameterName.Substring(1);
+ return string.Concat(":", parameterName.AsSpan(1));
}
// Add : prefix
@@ -159,7 +159,7 @@ public class QueryBreakdown : SqlServerQueryBreakdown
if (paramName.StartsWith(':'))
{
// Add @param version
- var atParam = "@" + paramName.Substring(1);
+ var atParam = string.Concat("@", paramName.AsSpan(1));
if (!Parameters.ContainsKey(atParam))
{
Parameters[atParam] = Parameters[paramName];
@@ -168,7 +168,7 @@ public class QueryBreakdown : SqlServerQueryBreakdown
else if (paramName.StartsWith('@'))
{
// Add :param version
- var colonParam = ":" + paramName.Substring(1);
+ var colonParam = string.Concat(":", paramName.AsSpan(1));
if (!Parameters.ContainsKey(colonParam))
{
Parameters[colonParam] = Parameters[paramName];
@@ -539,7 +539,7 @@ public class QueryBreakdown : SqlServerQueryBreakdown
if (i > 0)
{
- sb.Append(",");
+ sb.Append(',');
sb.AppendLine();
}
diff --git a/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdownCollection.cs b/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdownCollection.cs
index 3fe389d..e4d469f 100644
--- a/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdownCollection.cs
+++ b/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdownCollection.cs
@@ -67,7 +67,7 @@ public class QueryBreakdownCollection : SqlServer.QueryBreakdownCollectionBase
private static bool UsesStageReference(QueryBreakdown query)
{
- return query.GetSql().Contains("@") &&
+ return query.GetSql().Contains('@') &&
(query.GetSql().Contains("FROM @") || query.GetSql().Contains(" @"));
}
diff --git a/src/Strata.SqlTools.SqlBreakdown/Utilities/GuidUtils.cs b/src/Strata.SqlTools.SqlBreakdown/Utilities/GuidUtils.cs
index a869cd0..08a4e34 100644
--- a/src/Strata.SqlTools.SqlBreakdown/Utilities/GuidUtils.cs
+++ b/src/Strata.SqlTools.SqlBreakdown/Utilities/GuidUtils.cs
@@ -41,7 +41,7 @@ public static class GuidUtils
return Guid.Empty;
}
- if (value.Contains("-"))
+ if (value.Contains('-'))
{
// This function was called on an already valid guid
return new Guid(value);
@@ -92,7 +92,7 @@ public static class GuidUtils
var sb = new System.Text.StringBuilder(newguid);
while (sb.Length < Guid.Empty.ToString().Length)
{
- sb.Append(sb.ToString());
+ sb.Append(sb);
}
newguid = sb.ToString();
@@ -114,7 +114,7 @@ public static class GuidUtils
for (int i = 0; i < guidChars.Length; i++)
{
char chr = guidChars[i];
- if (valid.IndexOf(chr) == -1 && !((chr == '-') && (i == 8 || i == 13 || i == 18 || i == 23)))
+ if (!valid.Contains(chr) && !((chr == '-') && (i == 8 || i == 13 || i == 18 || i == 23)))
{
guidChars[i] = valid[Math.Abs(StringUtils.GetHashCode32Bit(chr)) % valid.Length];
}
diff --git a/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlColumnHelpers.cs b/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlColumnHelpers.cs
index cfdf4d4..54c22a4 100644
--- a/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlColumnHelpers.cs
+++ b/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlColumnHelpers.cs
@@ -16,7 +16,7 @@ public static partial class SqlUtils
public static void AppendAliasColumnWithComma(StringBuilder stringBuilder, string alias, string columnName)
{
stringBuilder.Append(alias);
- stringBuilder.Append(".");
+ stringBuilder.Append('.');
stringBuilder.Append(columnName);
stringBuilder.AppendLine(",");
}
@@ -58,7 +58,7 @@ public static partial class SqlUtils
{
stringBuilder.Append("CAST(");
stringBuilder.Append(alias);
- stringBuilder.Append(".");
+ stringBuilder.Append('.');
stringBuilder.Append(columnName);
stringBuilder.Append(" AS ");
stringBuilder.Append(dataType);
@@ -94,7 +94,7 @@ public static partial class SqlUtils
{
if (i > 0)
{
- sb.Append(",");
+ sb.Append(',');
}
string trimmed = columnNames[i].Trim();
diff --git a/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlGuidHelpers.cs b/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlGuidHelpers.cs
index 0319599..b9f50ed 100644
--- a/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlGuidHelpers.cs
+++ b/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlGuidHelpers.cs
@@ -42,10 +42,10 @@ public static partial class SqlUtils
foreach (Guid g in guidList)
{
- sb.Append("'");
+ sb.Append('\'');
sb.Append(g.ToString());
- sb.Append("'");
- sb.Append(",");
+ sb.Append('\'');
+ sb.Append(',');
}
return sb.ToString().Trim().TrimEnd(',');
diff --git a/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlUtils.Filters.cs b/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlUtils.Filters.cs
index 0bc03bd..235836b 100644
--- a/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlUtils.Filters.cs
+++ b/src/Strata.SqlTools.SqlBreakdown/Utilities/SqlUtils.Filters.cs
@@ -27,7 +27,7 @@ public static partial class SqlUtils
double.TryParse(value, out double dblValue);
// Optimize IN if only one value
- if (operation == FilterOperation.In && !value.Contains(","))
+ if (operation == FilterOperation.In && !value.Contains(','))
{
operation = FilterOperation.Equal;
}
@@ -144,7 +144,7 @@ public static partial class SqlUtils
}
int lastCloseParen = sb.ToString().LastIndexOf(')');
- filter.SqlExpression = sb.ToString().Substring(0, lastCloseParen + 1) + ")";
+ filter.SqlExpression = string.Concat(sb.ToString().AsSpan(0, lastCloseParen + 1), ")");
break;
case FilterOperation.NotBetween:
diff --git a/src/Strata.SqlTools.SqlServer/Breakdowns/QueryBreakdown.cs b/src/Strata.SqlTools.SqlServer/Breakdowns/QueryBreakdown.cs
index b816559..b1faed0 100644
--- a/src/Strata.SqlTools.SqlServer/Breakdowns/QueryBreakdown.cs
+++ b/src/Strata.SqlTools.SqlServer/Breakdowns/QueryBreakdown.cs
@@ -578,7 +578,7 @@ public class QueryBreakdown : SqlBreakdownBase, IQueryBreakdown
if (i > 0)
{
- sb.Append(",");
+ sb.Append(',');
sb.AppendLine();
}
diff --git a/tests/Strata.SqlTools.PostgreSql.Tests/PostgreSql/QueryBreakdownTests.cs b/tests/Strata.SqlTools.PostgreSql.Tests/PostgreSql/QueryBreakdownTests.cs
index fdb2d29..542d615 100644
--- a/tests/Strata.SqlTools.PostgreSql.Tests/PostgreSql/QueryBreakdownTests.cs
+++ b/tests/Strata.SqlTools.PostgreSql.Tests/PostgreSql/QueryBreakdownTests.cs
@@ -513,7 +513,7 @@ public class QueryBreakdownTests
// Assert
// Find the UserId parameter value
- var userIdKey = merged.Keys.FirstOrDefault(k => k.Contains("UserId") && !k.Contains("$"));
+ var userIdKey = merged.Keys.FirstOrDefault(k => k.Contains("UserId") && !k.Contains('$'));
Assert.That(userIdKey, Is.Not.Null);
Assert.That(merged[userIdKey], Is.EqualTo(123)); // Main query value, not CTE value
}
@@ -559,9 +559,9 @@ public class QueryBreakdownTests
var merged = mainQuery.GetMergedParameters();
// Assert
- var dateKey = merged.Keys.FirstOrDefault(k => k.Contains("CreatedDate") && !k.Contains("$"));
- var boolKey = merged.Keys.FirstOrDefault(k => k.Contains("IsActive") && !k.Contains("$"));
- var doubleKey = merged.Keys.FirstOrDefault(k => k.Contains("Threshold") && !k.Contains("$"));
+ var dateKey = merged.Keys.FirstOrDefault(k => k.Contains("CreatedDate") && !k.Contains('$'));
+ var boolKey = merged.Keys.FirstOrDefault(k => k.Contains("IsActive") && !k.Contains('$'));
+ var doubleKey = merged.Keys.FirstOrDefault(k => k.Contains("Threshold") && !k.Contains('$'));
Assert.That(dateKey, Is.Not.Null);
Assert.That(merged[dateKey], Is.TypeOf());
diff --git a/tests/Strata.SqlTools.Rules.Tests/RuleVisitorTests.cs b/tests/Strata.SqlTools.Rules.Tests/RuleVisitorTests.cs
index cc0ee1e..bd2de7c 100644
--- a/tests/Strata.SqlTools.Rules.Tests/RuleVisitorTests.cs
+++ b/tests/Strata.SqlTools.Rules.Tests/RuleVisitorTests.cs
@@ -133,7 +133,7 @@ public class TestRuleInput
public string? ImGoingToMakeThisNull { get; set; } = null;
- public TestRuleDetail[] Details { get; set; } = { };
+ public TestRuleDetail[] Details { get; set; } = Array.Empty();
}
public class TestRuleDetail
diff --git a/tests/Strata.SqlTools.SqlBreakdown.Tests/ExpressionTests/ExpressionFactoryFilterTests.cs b/tests/Strata.SqlTools.SqlBreakdown.Tests/ExpressionTests/ExpressionFactoryFilterTests.cs
index eb5d708..dc9f9ee 100644
--- a/tests/Strata.SqlTools.SqlBreakdown.Tests/ExpressionTests/ExpressionFactoryFilterTests.cs
+++ b/tests/Strata.SqlTools.SqlBreakdown.Tests/ExpressionTests/ExpressionFactoryFilterTests.cs
@@ -31,7 +31,7 @@ public class ExpressionFactoryFilterTests : ExpressionTestsBase
).SetName("CalendarFilter_{m}");
yield return new TestCaseData(
- new Filter(4, FilterType.Timeframe, new object[] { }, Array.Empty(), DatePart.Month, false, 1, 3),
+ new Filter(4, FilterType.Timeframe, Array.Empty