This is an automated email from the ASF dual-hosted git repository.

ptupitsyn pushed a commit to branch ignite-27278
in repository https://gitbox.apache.org/repos/asf/ignite-3.git

commit f923e6c67f3c0be3b2942c53fc7ff2b53aa4ca69
Author: Pavel Tupitsyn <[email protected]>
AuthorDate: Tue Dec 23 13:54:46 2025 +0200

    ResultSet cleanup
---
 .../dotnet/Apache.Ignite/Internal/Sql/ResultSet.cs  | 21 ++++++++++-----------
 1 file changed, 10 insertions(+), 11 deletions(-)

diff --git a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSet.cs 
b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSet.cs
index d4c02fb586e..0036cdc87a9 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSet.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSet.cs
@@ -44,6 +44,8 @@ namespace Apache.Ignite.Internal.Sql
 
         private readonly bool _hasMorePages;
 
+        private readonly ResultSetMetadata? _metadata;
+
         private readonly RowReader<T>? _rowReader;
 
         private readonly CancellationToken _cancellationToken;
@@ -76,9 +78,8 @@ namespace Apache.Ignite.Internal.Sql
             WasApplied = reader.ReadBoolean();
             AffectedRows = reader.ReadInt64();
 
-            ResultSetMetadata? meta = HasRowSet ? ReadMeta(ref reader) : null;
-            Metadata = meta;
-            _rowReader = meta != null ? rowReaderFactory(Metadata.Columns) : 
null;
+            _metadata = HasRowSet ? ReadMeta(ref reader) : null;
+            _rowReader = _metadata != null ? rowReaderFactory(_metadata) : 
null;
 
             if (HasRowSet)
             {
@@ -103,7 +104,7 @@ namespace Apache.Ignite.Internal.Sql
         }
 
         /// <inheritdoc/>
-        public IResultSetMetadata? Metadata { get; }
+        public IResultSetMetadata? Metadata => _metadata;
 
         /// <inheritdoc/>
         public bool HasRowSet { get; }
@@ -157,7 +158,6 @@ namespace Apache.Ignite.Internal.Sql
             ValidateAndSetIteratorState();
 
             // First page is included in the initial response.
-            var cols = Metadata!.Columns;
             var hasMore = _hasMorePages;
             TResult? res = default;
 
@@ -184,7 +184,7 @@ namespace Apache.Ignite.Internal.Sql
 
                 for (var rowIdx = 0; rowIdx < pageSize; rowIdx++)
                 {
-                    var row = ReadRow(cols, ref reader);
+                    var row = ReadRow(ref reader);
                     accumulator(res, row);
                 }
 
@@ -319,17 +319,16 @@ namespace Apache.Ignite.Internal.Sql
             return new ResultSetMetadata(columns);
         }
 
-        private T ReadRow(IReadOnlyList<IColumnMetadata> cols, ref 
MsgPackReader reader)
+        private T ReadRow(ref MsgPackReader reader)
         {
-            var tupleReader = new BinaryTupleReader(reader.ReadBinary(), 
cols.Count);
+            var tupleReader = new BinaryTupleReader(reader.ReadBinary(), 
_metadata!.Columns.Count);
 
-            return _rowReader!(cols, ref tupleReader);
+            return _rowReader!(_metadata, ref tupleReader);
         }
 
         private async IAsyncEnumerable<T> EnumerateRows()
         {
             var hasMore = _hasMorePages;
-            var cols = Metadata!.Columns;
             var offset = 0;
 
             // First page.
@@ -368,7 +367,7 @@ namespace Apache.Ignite.Internal.Sql
                     // Can't use ref struct reader from above inside iterator 
block (CS4013).
                     // Use a new reader for every row (stack allocated).
                     var rowReader = buf.GetReader(offset);
-                    var row = ReadRow(cols, ref rowReader);
+                    var row = ReadRow(ref rowReader);
 
                     offset += rowReader.Consumed;
                     yield return row;

Reply via email to