diff --git a/src/Strata.SqlTools.LinqToSql/Breakdowns/LinqQueryBreakdown.cs b/src/Strata.SqlTools.LinqToSql/Breakdowns/LinqQueryBreakdown.cs
index aadafed..d7074cd 100644
--- a/src/Strata.SqlTools.LinqToSql/Breakdowns/LinqQueryBreakdown.cs
+++ b/src/Strata.SqlTools.LinqToSql/Breakdowns/LinqQueryBreakdown.cs
@@ -14,7 +14,6 @@ namespace Strata.SqlTools.Breakdowns.LinqToSql;
/// SELECT, WHERE, JOIN, GROUP BY, and ORDER BY clauses, making them accessible
/// through the QueryBreakdown interface.
///
-[Serializable]
public class LinqQueryBreakdown : QueryBreakdown
{
///
diff --git a/src/Strata.SqlTools.PostgreSql/Breakdowns/QueryBreakdown.cs b/src/Strata.SqlTools.PostgreSql/Breakdowns/QueryBreakdown.cs
index 54f187c..30d2f74 100644
--- a/src/Strata.SqlTools.PostgreSql/Breakdowns/QueryBreakdown.cs
+++ b/src/Strata.SqlTools.PostgreSql/Breakdowns/QueryBreakdown.cs
@@ -1,5 +1,4 @@
using System.Collections;
-using System.Runtime.Serialization;
using Strata.SqlTools.SqlBreakdown.Expressions;
using Strata.SqlTools.SqlBreakdown.Interfaces.Core;
using CommandVisitor = Strata.SqlTools.Visitors.PostgreSql.CommandVisitor;
@@ -15,7 +14,6 @@ namespace Strata.SqlTools.Breakdowns.PostgreSql;
/// Represents a PostgreSQL query breakdown with all clauses, following PostgreSQL SQL standards.
/// Handles positional parameters using $1, $2, ... syntax for parameterized queries.
///
-[Serializable]
public class QueryBreakdown : SqlServerQueryBreakdown
{
private const string ExpressionNullErrorMessage = "Expression cannot be null.";
@@ -89,14 +87,6 @@ public class QueryBreakdown : SqlServerQueryBreakdown
}
}
- ///
- /// Re-establishes invariants after deserialization, since deserialization bypasses the
- /// constructors that normally initialize the breakdown's clause state (SonarQube rule S5766).
- ///
- /// The streaming context for the deserialization operation.
- [OnDeserialized]
- private void OnDeserialized(StreamingContext context) => RevalidateBreakdownState();
-
///
/// Adds a parameter to the query using PostgreSQL's positional parameter format ($1, $2, ...).
///
diff --git a/src/Strata.SqlTools.PostgreSql/Breakdowns/QueryBreakdownCollection.cs b/src/Strata.SqlTools.PostgreSql/Breakdowns/QueryBreakdownCollection.cs
index 5a1b308..d0a15f2 100644
--- a/src/Strata.SqlTools.PostgreSql/Breakdowns/QueryBreakdownCollection.cs
+++ b/src/Strata.SqlTools.PostgreSql/Breakdowns/QueryBreakdownCollection.cs
@@ -1,4 +1,3 @@
-using System.Runtime.Serialization;
using System.Text;
using Strata.SqlTools.SqlBreakdown.Classes;
using Strata.SqlTools.SqlBreakdown.Interfaces;
@@ -13,7 +12,6 @@ namespace Strata.SqlTools.Breakdowns.PostgreSql;
/// including support for PostgreSQL features like schema-qualified identifiers,
/// LIMIT/OFFSET clauses, parameterized queries using $1, $2 syntax, and CTEs.
///
-[Serializable]
public class QueryBreakdownCollection : SqlBreakdownCollection
{
private readonly List _queryBreakdowns;
@@ -36,20 +34,6 @@ public class QueryBreakdownCollection : SqlBreakdownCollection
_queryBreakdowns = queryBreakdowns?.ToList() ?? new List();
}
- ///
- /// Validates that the backing list survived deserialization, since deserialization bypasses
- /// the constructors that normally initialize it (SonarQube rule S5766).
- ///
- /// The streaming context for the deserialization operation.
- [OnDeserialized]
- private void OnDeserialized(StreamingContext context)
- {
- if (_queryBreakdowns is null)
- {
- throw new SerializationException("Deserialized QueryBreakdownCollection is missing its backing list.");
- }
- }
-
///
/// Gets the collection of QueryBreakdown objects.
///
diff --git a/src/Strata.SqlTools.Snowflake/Breakdowns/DeleteBreakdown.cs b/src/Strata.SqlTools.Snowflake/Breakdowns/DeleteBreakdown.cs
index 3bfb2b6..9e2cfeb 100644
--- a/src/Strata.SqlTools.Snowflake/Breakdowns/DeleteBreakdown.cs
+++ b/src/Strata.SqlTools.Snowflake/Breakdowns/DeleteBreakdown.cs
@@ -1,5 +1,4 @@
using System.Collections;
-using System.Runtime.Serialization;
using System.Text;
using SqlServerDeleteBreakdown = Strata.SqlTools.Breakdowns.SqlServer.DeleteBreakdown;
using StatementParser = Strata.SqlTools.Statements.Snowflake.StatementParser;
@@ -9,7 +8,6 @@ namespace Strata.SqlTools.Breakdowns.Snowflake;
///
/// Represents a DELETE SQL statement breakdown with FROM and WHERE clauses for Snowflake.
///
-[Serializable]
public class DeleteBreakdown : SqlServerDeleteBreakdown
{
private static readonly StatementParser SnowflakeParserInstance = new StatementParser();
@@ -41,14 +39,6 @@ public class DeleteBreakdown : SqlServerDeleteBreakdown
WhereClause.Comment = whereComments.Count > 0 ? string.Join(" ", whereComments) : null;
}
- ///
- /// Re-establishes invariants after deserialization, since deserialization bypasses the
- /// constructors that normally initialize the breakdown's clause state (SonarQube rule S5766).
- ///
- /// The streaming context for the deserialization operation.
- [OnDeserialized]
- private void OnDeserialized(StreamingContext context) => RevalidateBreakdownState();
-
///
/// Gets the SQL breakdown as a string for Snowflake.
///
diff --git a/src/Strata.SqlTools.Snowflake/Breakdowns/InsertBreakdown.cs b/src/Strata.SqlTools.Snowflake/Breakdowns/InsertBreakdown.cs
index eff1562..d719ad9 100644
--- a/src/Strata.SqlTools.Snowflake/Breakdowns/InsertBreakdown.cs
+++ b/src/Strata.SqlTools.Snowflake/Breakdowns/InsertBreakdown.cs
@@ -1,5 +1,4 @@
using System.Collections;
-using System.Runtime.Serialization;
using Strata.SqlTools.SqlBreakdown.Utilities;
using SqlServerInsertBreakdown = Strata.SqlTools.Breakdowns.SqlServer.InsertBreakdown;
using StatementParser = Strata.SqlTools.Statements.Snowflake.StatementParser;
@@ -9,7 +8,6 @@ namespace Strata.SqlTools.Breakdowns.Snowflake;
///
/// Represents an INSERT SQL statement breakdown with column and value clauses for Snowflake.
///
-[Serializable]
public class InsertBreakdown : SqlServerInsertBreakdown
{
private static readonly StatementParser SnowflakeParserInstance = new StatementParser();
@@ -66,14 +64,6 @@ public class InsertBreakdown : SqlServerInsertBreakdown
ValuesClause.Clause = string.Join(",", valuesList);
}
- ///
- /// Re-establishes invariants after deserialization, since deserialization bypasses the
- /// constructors that normally initialize the breakdown's clause state (SonarQube rule S5766).
- ///
- /// The streaming context for the deserialization operation.
- [OnDeserialized]
- private void OnDeserialized(StreamingContext context) => RevalidateBreakdownState();
-
#region Parse Methods
///
diff --git a/src/Strata.SqlTools.Snowflake/Breakdowns/ProcedureBreakdown.cs b/src/Strata.SqlTools.Snowflake/Breakdowns/ProcedureBreakdown.cs
index cb2c65b..e445b9a 100644
--- a/src/Strata.SqlTools.Snowflake/Breakdowns/ProcedureBreakdown.cs
+++ b/src/Strata.SqlTools.Snowflake/Breakdowns/ProcedureBreakdown.cs
@@ -1,5 +1,4 @@
using System.Collections;
-using System.Runtime.Serialization;
using System.Text;
using SqlServerProcedureBreakdown = Strata.SqlTools.Breakdowns.SqlServer.ProcedureBreakdown;
using StatementParser = Strata.SqlTools.Statements.Snowflake.StatementParser;
@@ -9,7 +8,6 @@ namespace Strata.SqlTools.Breakdowns.Snowflake;
///
/// Represents a Snowflake stored procedure call breakdown with procedure name and parameters.
///
-[Serializable]
public class ProcedureBreakdown : SqlServerProcedureBreakdown
{
private static readonly StatementParser SnowflakeParserInstance = new StatementParser();
@@ -47,15 +45,6 @@ public class ProcedureBreakdown : SqlServerProcedureBreakdown
Parameters = parameters ?? new Dictionary();
}
- ///
- /// Re-establishes invariants after deserialization, since deserialization bypasses the
- /// constructors that normally initialize the procedure name and parameter collection
- /// (SonarQube rule S5766).
- ///
- /// The streaming context for the deserialization operation.
- [OnDeserialized]
- private void OnDeserialized(StreamingContext context) => RevalidateBreakdownState();
-
///
/// Gets the SQL breakdown as a string for Snowflake.
///
diff --git a/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdown.cs b/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdown.cs
index de946fd..4ee4c10 100644
--- a/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdown.cs
+++ b/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdown.cs
@@ -1,5 +1,4 @@
using System.Collections;
-using System.Runtime.Serialization;
using System.Text;
using Strata.SqlTools.SqlBreakdown.Classes;
using Strata.SqlTools.SqlBreakdown.Expressions;
@@ -19,7 +18,6 @@ namespace Strata.SqlTools.Breakdowns.Snowflake;
/// Represents a Snowflake SQL query breakdown with all clauses, following Snowflake SQL standards.
/// Handles both :parameter and @parameter syntax for Snowflake compatibility.
///
-[Serializable]
public class QueryBreakdown : SqlServerQueryBreakdown
{
private const string ExpressionNullErrorMessage = "Expression cannot be null.";
@@ -86,14 +84,6 @@ public class QueryBreakdown : SqlServerQueryBreakdown
OrderByClause.Comment = orderByComments.Count > 0 ? string.Join(" ", orderByComments) : null;
}
- ///
- /// Re-establishes invariants after deserialization, since deserialization bypasses the
- /// constructors that normally initialize the breakdown's clause state (SonarQube rule S5766).
- ///
- /// The streaming context for the deserialization operation.
- [OnDeserialized]
- private void OnDeserialized(StreamingContext context) => RevalidateBreakdownState();
-
///
/// Adds a parameter to the query using Snowflake's :param format.
/// Also adds @param format for compatibility.
diff --git a/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdownCollection.cs b/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdownCollection.cs
index 062f0eb..9a033a2 100644
--- a/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdownCollection.cs
+++ b/src/Strata.SqlTools.Snowflake/Breakdowns/QueryBreakdownCollection.cs
@@ -1,4 +1,3 @@
-using System.Runtime.Serialization;
using System.Text;
using Strata.SqlTools.SqlBreakdown.Classes;
using Strata.SqlTools.SqlBreakdown.Interfaces;
@@ -14,7 +13,6 @@ namespace Strata.SqlTools.Breakdowns.Snowflake;
/// time travel, snowflake-specific parameters (:parameter and @parameter syntax),
/// and proper batch handling.
///
-[Serializable]
public class QueryBreakdownCollection : SqlBreakdownCollection
{
private readonly List _queryBreakdowns;
@@ -37,20 +35,6 @@ public class QueryBreakdownCollection : SqlBreakdownCollection
_queryBreakdowns = new List(queryBreakdowns ?? Enumerable.Empty());
}
- ///
- /// Validates that the backing list survived deserialization, since deserialization bypasses
- /// the constructors that normally initialize it (SonarQube rule S5766).
- ///
- /// The streaming context for the deserialization operation.
- [OnDeserialized]
- private void OnDeserialized(StreamingContext context)
- {
- if (_queryBreakdowns is null)
- {
- throw new SerializationException("Deserialized QueryBreakdownCollection is missing its backing list.");
- }
- }
-
///
/// Gets the collection of QueryBreakdown objects.
///
diff --git a/src/Strata.SqlTools.Snowflake/Breakdowns/UpdateBreakdown.cs b/src/Strata.SqlTools.Snowflake/Breakdowns/UpdateBreakdown.cs
index 21e5341..f0fcc00 100644
--- a/src/Strata.SqlTools.Snowflake/Breakdowns/UpdateBreakdown.cs
+++ b/src/Strata.SqlTools.Snowflake/Breakdowns/UpdateBreakdown.cs
@@ -1,5 +1,4 @@
using System.Collections;
-using System.Runtime.Serialization;
using System.Text;
using SqlServerUpdateBreakdown = Strata.SqlTools.Breakdowns.SqlServer.UpdateBreakdown;
using StatementParser = Strata.SqlTools.Statements.Snowflake.StatementParser;
@@ -9,7 +8,6 @@ namespace Strata.SqlTools.Breakdowns.Snowflake;
///
/// Represents an UPDATE SQL statement breakdown with SET, FROM, and WHERE clauses for Snowflake.
///
-[Serializable]
public class UpdateBreakdown : SqlServerUpdateBreakdown
{
private static readonly StatementParser SnowflakeParserInstance = new StatementParser();
@@ -46,14 +44,6 @@ public class UpdateBreakdown : SqlServerUpdateBreakdown
WhereClause.Comment = whereComments.Count > 0 ? string.Join(" ", whereComments) : null;
}
- ///
- /// Re-establishes invariants after deserialization, since deserialization bypasses the
- /// constructors that normally initialize the breakdown's clause state (SonarQube rule S5766).
- ///
- /// The streaming context for the deserialization operation.
- [OnDeserialized]
- private void OnDeserialized(StreamingContext context) => RevalidateBreakdownState();
-
///
/// Gets the SQL breakdown as a string for Snowflake.
///
diff --git a/src/Strata.SqlTools.SqlBreakdown/Classes/QueryParam.cs b/src/Strata.SqlTools.SqlBreakdown/Classes/QueryParam.cs
index 1bb44bf..0a45bb1 100644
--- a/src/Strata.SqlTools.SqlBreakdown/Classes/QueryParam.cs
+++ b/src/Strata.SqlTools.SqlBreakdown/Classes/QueryParam.cs
@@ -5,7 +5,6 @@ namespace Strata.SqlTools.SqlBreakdown.Classes;
///
/// Represents a query parameter with a name and value.
///
-[Serializable]
public sealed class QueryParam : IQueryParam
{
///
diff --git a/src/Strata.SqlTools.SqlBreakdown/Classes/RawSqlBreakdown.cs b/src/Strata.SqlTools.SqlBreakdown/Classes/RawSqlBreakdown.cs
index b29bee0..24b40af 100644
--- a/src/Strata.SqlTools.SqlBreakdown/Classes/RawSqlBreakdown.cs
+++ b/src/Strata.SqlTools.SqlBreakdown/Classes/RawSqlBreakdown.cs
@@ -10,7 +10,6 @@ namespace Strata.SqlTools.SqlBreakdown.Classes;
/// This class is primarily used for batch SQL parsing where raw statements need to be stored
/// without detailed clause breakdown. Actual clause parsing can be performed separately.
///
-[Serializable]
public class RawSqlBreakdown : ISqlBreakdown
{
///
diff --git a/src/Strata.SqlTools.SqlBreakdown/Classes/SqlBreakdownBase.cs b/src/Strata.SqlTools.SqlBreakdown/Classes/SqlBreakdownBase.cs
index 18252f9..08380f5 100644
--- a/src/Strata.SqlTools.SqlBreakdown/Classes/SqlBreakdownBase.cs
+++ b/src/Strata.SqlTools.SqlBreakdown/Classes/SqlBreakdownBase.cs
@@ -7,7 +7,6 @@ namespace Strata.SqlTools.SqlBreakdown.Classes;
///
/// Base class for SQL query breakdowns that provides common setup/finish clause handling and cloning.
///
-[Serializable]
public abstract class SqlBreakdownBase : ISqlBreakdown
{
///
@@ -48,18 +47,6 @@ public abstract class SqlBreakdownBase : ISqlBreakdown
///
public bool IsUsingFinishClause => FinishClauses.Count > 0;
- ///
- /// Re-establishes the invariants normally guaranteed by the constructors after the object
- /// is reconstructed by deserialization. Deserialization bypasses constructors, so the
- /// collection state must be re-validated to avoid a partially-initialized object
- /// (SonarQube rule S5766).
- ///
- protected void RevalidateBreakdownState()
- {
- SetupClauses ??= new List();
- FinishClauses ??= new ArrayList();
- }
-
///
/// Gets the SQL breakdown as a string. Must be implemented by derived classes.
///
diff --git a/src/Strata.SqlTools.SqlBreakdown/Classes/SqlBreakdownCollection.cs b/src/Strata.SqlTools.SqlBreakdown/Classes/SqlBreakdownCollection.cs
index 9ecd6cf..ae378df 100644
--- a/src/Strata.SqlTools.SqlBreakdown/Classes/SqlBreakdownCollection.cs
+++ b/src/Strata.SqlTools.SqlBreakdown/Classes/SqlBreakdownCollection.cs
@@ -1,4 +1,3 @@
-using System.Runtime.Serialization;
using System.Text;
using Strata.SqlTools.SqlBreakdown.Interfaces;
using Strata.SqlTools.SqlBreakdown.Interfaces.QueryEngine;
@@ -13,7 +12,6 @@ namespace Strata.SqlTools.SqlBreakdown.Classes;
/// allowing efficient management and retrieval of multiple SQL breakdowns as a unified collection.
/// Implements ICollection<ISqlBreakdown> to provide standard collection semantics and LINQ support.
///
-[Serializable]
public class SqlBreakdownCollection : ICollection
{
private readonly List _breakdowns;
@@ -36,20 +34,6 @@ public class SqlBreakdownCollection : ICollection
_breakdowns = new List(breakdowns ?? Enumerable.Empty());
}
- ///
- /// Validates that the backing list survived deserialization, since deserialization bypasses
- /// the constructors that normally initialize it (SonarQube rule S5766).
- ///
- /// The streaming context for the deserialization operation.
- [OnDeserialized]
- private void OnDeserialized(StreamingContext context)
- {
- if (_breakdowns is null)
- {
- throw new SerializationException("Deserialized SqlBreakdownCollection is missing its backing list.");
- }
- }
-
///
/// Gets the collection of SQL breakdowns.
///
diff --git a/src/Strata.SqlTools.SqlBreakdown/Classes/SqlFilter.cs b/src/Strata.SqlTools.SqlBreakdown/Classes/SqlFilter.cs
index 17bea2b..3de4626 100644
--- a/src/Strata.SqlTools.SqlBreakdown/Classes/SqlFilter.cs
+++ b/src/Strata.SqlTools.SqlBreakdown/Classes/SqlFilter.cs
@@ -1,4 +1,3 @@
-using System.Runtime.Serialization;
using System.Text;
using Strata.SqlTools.SqlBreakdown.Interfaces.Core;
@@ -8,7 +7,6 @@ namespace Strata.SqlTools.SqlBreakdown.Classes;
/// Represents a SQL filter with an expression and parameters.
/// Implements SQL appendable and SQL interfaces for query building.
///
-[Serializable]
public class SqlFilter : ISqlAppendable
{
private readonly StringBuilder _sqlExpression;
@@ -59,21 +57,6 @@ public class SqlFilter : ISqlAppendable
}
}
- ///
- /// Validates that the expression and parameter state survived deserialization, since
- /// deserialization bypasses the constructors that normally initialize them and enforce the
- /// even parameter-name/value pairing (SonarQube rule S5766).
- ///
- /// The streaming context for the deserialization operation.
- [OnDeserialized]
- private void OnDeserialized(StreamingContext context)
- {
- if (_sqlExpression is null || _parameterValues is null)
- {
- throw new SerializationException("Deserialized SqlFilter is missing its expression or parameter state.");
- }
- }
-
///
/// Gets or sets the SQL expression.
///
diff --git a/src/Strata.SqlTools.SqlServer/Breakdowns/DeleteBreakdown.cs b/src/Strata.SqlTools.SqlServer/Breakdowns/DeleteBreakdown.cs
index fd8c44b..03b2f46 100644
--- a/src/Strata.SqlTools.SqlServer/Breakdowns/DeleteBreakdown.cs
+++ b/src/Strata.SqlTools.SqlServer/Breakdowns/DeleteBreakdown.cs
@@ -8,7 +8,6 @@ namespace Strata.SqlTools.Breakdowns.SqlServer;
///
/// Represents a DELETE SQL statement breakdown with FROM and WHERE clauses for SQL Server.
///
-[Serializable]
public class DeleteBreakdown : SqlBreakdownBase
{
protected readonly StatementParser Parser;
diff --git a/src/Strata.SqlTools.SqlServer/Breakdowns/InsertBreakdown.cs b/src/Strata.SqlTools.SqlServer/Breakdowns/InsertBreakdown.cs
index 071e7d0..5176880 100644
--- a/src/Strata.SqlTools.SqlServer/Breakdowns/InsertBreakdown.cs
+++ b/src/Strata.SqlTools.SqlServer/Breakdowns/InsertBreakdown.cs
@@ -9,7 +9,6 @@ namespace Strata.SqlTools.Breakdowns.SqlServer;
///
/// Represents an INSERT SQL statement breakdown with column and value clauses for SQL Server.
///
-[Serializable]
public class InsertBreakdown : SqlBreakdownBase
{
protected readonly StatementParser Parser;
diff --git a/src/Strata.SqlTools.SqlServer/Breakdowns/ProcedureBreakdown.cs b/src/Strata.SqlTools.SqlServer/Breakdowns/ProcedureBreakdown.cs
index cf697a4..d453de8 100644
--- a/src/Strata.SqlTools.SqlServer/Breakdowns/ProcedureBreakdown.cs
+++ b/src/Strata.SqlTools.SqlServer/Breakdowns/ProcedureBreakdown.cs
@@ -1,5 +1,4 @@
using System.Collections;
-using System.Runtime.Serialization;
using System.Text;
using System.Text.RegularExpressions;
using Strata.SqlTools.SqlBreakdown.Classes;
@@ -10,7 +9,6 @@ namespace Strata.SqlTools.Breakdowns.SqlServer;
///
/// Represents a SQL Server stored procedure call breakdown with procedure name and parameters.
///
-[Serializable]
public class ProcedureBreakdown : SqlBreakdownBase
{
protected readonly StatementParser Parser;
@@ -46,20 +44,6 @@ public class ProcedureBreakdown : SqlBreakdownBase
Parameters = parameters ?? new Dictionary();
}
- ///
- /// Re-establishes invariants after deserialization, since deserialization bypasses the
- /// constructors that normally initialize the procedure name and parameter collection
- /// (SonarQube rule S5766).
- ///
- /// The streaming context for the deserialization operation.
- [OnDeserialized]
- private void OnDeserialized(StreamingContext context)
- {
- RevalidateBreakdownState();
- ProcedureName ??= new SqlClause();
- Parameters ??= new Dictionary();
- }
-
///
/// Gets or sets the stored procedure name.
///
diff --git a/src/Strata.SqlTools.SqlServer/Breakdowns/QueryBreakdown.cs b/src/Strata.SqlTools.SqlServer/Breakdowns/QueryBreakdown.cs
index e817b91..7cb4b8d 100644
--- a/src/Strata.SqlTools.SqlServer/Breakdowns/QueryBreakdown.cs
+++ b/src/Strata.SqlTools.SqlServer/Breakdowns/QueryBreakdown.cs
@@ -1,5 +1,4 @@
using System.Collections;
-using System.Runtime.Serialization;
using System.Text;
using Strata.SqlTools.SqlBreakdown.Classes;
using Strata.SqlTools.SqlBreakdown.Expressions;
@@ -14,7 +13,6 @@ namespace Strata.SqlTools.Breakdowns.SqlServer;
///
/// Represents a SELECT query breakdown with all clauses (SELECT, FROM, WHERE, GROUP BY, HAVING, ORDER BY).
///
-[Serializable]
#pragma warning disable S2325 // Methods and properties that don't access instance data should be static - False positive: These members access instance fields
public class QueryBreakdown : SqlBreakdownBase, IQueryBreakdown
{
@@ -108,28 +106,6 @@ public class QueryBreakdown : SqlBreakdownBase, IQueryBreakdown
}
}
- ///
- /// Re-establishes invariants after deserialization, since deserialization bypasses the
- /// constructors that normally initialize the parameter, WITH-clause, and clause backing
- /// fields (SonarQube rule S5766).
- ///
- /// The streaming context for the deserialization operation.
- [OnDeserialized]
- private void OnDeserialized(StreamingContext context)
- {
- RevalidateBreakdownState();
-
- _parameterList ??= new List();
- _withClauses ??= new List();
- _selectClause ??= new SqlExpressionClause(splitOnComma: true);
- _fromClause ??= new SqlClause();
- _whereClause ??= new SqlExpressionClause(splitOnComma: false);
- _groupByClause ??= new SqlExpressionClause(splitOnComma: true);
- _havingClause ??= new SqlExpressionClause(splitOnComma: false);
- _orderByClause ??= new SqlExpressionClause(splitOnComma: true);
- _clausesCacheDirty = true;
- }
-
#region Properties
///
diff --git a/src/Strata.SqlTools.SqlServer/Breakdowns/QueryBreakdownCollection.cs b/src/Strata.SqlTools.SqlServer/Breakdowns/QueryBreakdownCollection.cs
index 0594a9b..4fbf08c 100644
--- a/src/Strata.SqlTools.SqlServer/Breakdowns/QueryBreakdownCollection.cs
+++ b/src/Strata.SqlTools.SqlServer/Breakdowns/QueryBreakdownCollection.cs
@@ -1,4 +1,3 @@
-using System.Runtime.Serialization;
using System.Text;
using Strata.SqlTools.SqlBreakdown.Classes;
using Strata.SqlTools.SqlBreakdown.Interfaces;
@@ -12,7 +11,6 @@ namespace Strata.SqlTools.Breakdowns.SqlServer;
/// This class extends SqlBreakdownCollection with SQL Server-specific functionality,
/// including support for T-SQL features like batches (GO), temporary tables, stored procedures, and CTEs.
///
-[Serializable]
public class QueryBreakdownCollection : SqlBreakdownCollection
{
private readonly List _queryBreakdowns;
@@ -34,20 +32,6 @@ public class QueryBreakdownCollection : SqlBreakdownCollection
_queryBreakdowns = new List(queryBreakdowns ?? Enumerable.Empty());
}
- ///
- /// Validates that the backing list survived deserialization, since deserialization bypasses
- /// the constructors that normally initialize it (SonarQube rule S5766).
- ///
- /// The streaming context for the deserialization operation.
- [OnDeserialized]
- private void OnDeserialized(StreamingContext context)
- {
- if (_queryBreakdowns is null)
- {
- throw new SerializationException("Deserialized QueryBreakdownCollection is missing its backing list.");
- }
- }
-
///
/// Gets the collection of QueryBreakdown objects.
///
diff --git a/src/Strata.SqlTools.SqlServer/Breakdowns/UpdateBreakdown.cs b/src/Strata.SqlTools.SqlServer/Breakdowns/UpdateBreakdown.cs
index f5ee6b6..b280f81 100644
--- a/src/Strata.SqlTools.SqlServer/Breakdowns/UpdateBreakdown.cs
+++ b/src/Strata.SqlTools.SqlServer/Breakdowns/UpdateBreakdown.cs
@@ -9,7 +9,6 @@ namespace Strata.SqlTools.Breakdowns.SqlServer;
///
/// Represents an UPDATE SQL statement breakdown with SET, FROM, and WHERE clauses for SQL Server.
///
-[Serializable]
public class UpdateBreakdown : SqlBreakdownBase
{
protected readonly StatementParser Parser;