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
The following commit(s) were added to refs/heads/ignite-27278 by this push:
new 4ed20e5c6d7 Finalize refactoring
4ed20e5c6d7 is described below
commit 4ed20e5c6d78c05f42ef805015799b04ebbd2e8f
Author: Pavel Tupitsyn <[email protected]>
AuthorDate: Tue Dec 23 14:05:23 2025 +0200
Finalize refactoring
---
.../dotnet/Apache.Ignite/Internal/Sql/ResultSet.cs | 4 +--
.../Internal/Sql/ResultSetMetadata.cs | 31 +++++++++++++++++-----
.../dotnet/Apache.Ignite/Internal/Sql/Sql.cs | 7 ++---
.../Table/Serialization/MapperSerializerHandler.cs | 2 +-
.../dotnet/Apache.Ignite/Table/Mapper/RowReader.cs | 6 ++---
5 files changed, 32 insertions(+), 18 deletions(-)
diff --git a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSet.cs
b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSet.cs
index 0036cdc87a9..db541ff3ec8 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSet.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSet.cs
@@ -291,7 +291,7 @@ namespace Apache.Ignite.Internal.Sql
{
var size = reader.ReadInt32();
- var columns = new List<IColumnMetadata>(size);
+ var columns = new ColumnMetadata[size];
for (int i = 0; i < size; i++)
{
@@ -313,7 +313,7 @@ namespace Apache.Ignite.Internal.Sql
TableName: reader.TryReadInt(out idx) ?
columns[idx].Origin!.TableName : reader.ReadString())
: null;
- columns.Add(new ColumnMetadata(name, type, precision, scale,
nullable, origin));
+ columns[i] = new ColumnMetadata(name, type, precision, scale,
nullable, origin);
}
return new ResultSetMetadata(columns);
diff --git
a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSetMetadata.cs
b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSetMetadata.cs
index 644a713c354..372562fb7e5 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSetMetadata.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/ResultSetMetadata.cs
@@ -20,16 +20,33 @@ namespace Apache.Ignite.Internal.Sql
using System.Collections.Generic;
using Common;
using Ignite.Sql;
+ using Ignite.Table.Mapper;
/// <summary>
/// Result set metadata.
/// </summary>
- /// <param name="Columns">Columns.</param>
- internal sealed record ResultSetMetadata(IReadOnlyList<IColumnMetadata>
Columns) : IResultSetMetadata
+ internal sealed record ResultSetMetadata : IResultSetMetadata,
IMapperSchema
{
+ private readonly ColumnMetadata[] _columns;
+
/** Column index by name. Initialized on first access. */
private Dictionary<string, int>? _indices;
+ /// <summary>
+ /// Initializes a new instance of the <see cref="ResultSetMetadata"/>
class.
+ /// </summary>
+ /// <param name="columns">Columns.</param>
+ internal ResultSetMetadata(ColumnMetadata[] columns)
+ {
+ _columns = columns;
+ }
+
+ /// <inheritdoc/>
+ public IReadOnlyList<IColumnMetadata> Columns => _columns;
+
+ /// <inheritdoc/>
+ IReadOnlyList<IMapperColumn> IMapperSchema.Columns => _columns;
+
/// <inheritdoc/>
public int IndexOf(string columnName)
{
@@ -37,23 +54,23 @@ namespace Apache.Ignite.Internal.Sql
if (indices == null)
{
- indices = new Dictionary<string, int>(Columns.Count);
+ indices = new Dictionary<string, int>(_columns.Length);
- for (var i = 0; i < Columns.Count; i++)
+ for (var i = 0; i < _columns.Length; i++)
{
- indices[Columns[i].Name] = i;
+ indices[_columns[i].Name] = i;
}
_indices = indices;
}
- return indices.TryGetValue(columnName, out var idx) ? idx : -1;
+ return indices.GetValueOrDefault(columnName, -1);
}
/// <inheritdoc/>
public override string ToString() =>
new IgniteToStringBuilder(GetType())
- .AppendList(Columns)
+ .AppendList(_columns)
.Build();
}
}
diff --git a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/Sql.cs
b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/Sql.cs
index 986d345e1e0..182d5dc528e 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/Sql.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/Sql.cs
@@ -33,7 +33,6 @@ namespace Apache.Ignite.Internal.Sql
using Proto;
using Proto.BinaryTuple;
using Proto.MsgPack;
- using Table;
using Table.Serialization;
using Transactions;
@@ -89,10 +88,8 @@ namespace Apache.Ignite.Internal.Sql
{
return (ResultSetMetadata meta, ref BinaryTupleReader reader)
=>
{
- var mapperCols =
meta.Columns.Cast<IMapperColumn>().ToList();
-
- var mapperReader = new RowReader(ref reader, mapperCols);
- return mapper.Read(ref mapperReader, new
MapperSchema(mapperCols));
+ var mapperReader = new RowReader(ref reader, meta);
+ return mapper.Read(ref mapperReader, meta);
};
};
diff --git
a/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/MapperSerializerHandler.cs
b/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/MapperSerializerHandler.cs
index 46aa17f761d..8327f188bae 100644
---
a/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/MapperSerializerHandler.cs
+++
b/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/MapperSerializerHandler.cs
@@ -55,7 +55,7 @@ internal sealed class MapperSerializerHandler<T> :
IRecordSerializerHandler<T>
IMapperSchema mapperSchema = schema.GetMapperSchema(keyOnly);
var binaryTupleReader = new BinaryTupleReader(reader.ReadBinary(),
mapperSchema.Columns.Count);
- var mapperReader = new RowReader(ref binaryTupleReader,
mapperSchema.Columns);
+ var mapperReader = new RowReader(ref binaryTupleReader, mapperSchema);
return _mapper.Read(ref mapperReader, mapperSchema);
}
diff --git a/modules/platforms/dotnet/Apache.Ignite/Table/Mapper/RowReader.cs
b/modules/platforms/dotnet/Apache.Ignite/Table/Mapper/RowReader.cs
index 26b2baf4ff3..c36fbb77325 100644
--- a/modules/platforms/dotnet/Apache.Ignite/Table/Mapper/RowReader.cs
+++ b/modules/platforms/dotnet/Apache.Ignite/Table/Mapper/RowReader.cs
@@ -39,11 +39,11 @@ public ref struct RowReader
/// Initializes a new instance of the <see cref="RowReader"/> struct.
/// </summary>
/// <param name="reader">Reader.</param>
- /// <param name="columns">Columns.</param>
- internal RowReader(ref BinaryTupleReader reader,
IReadOnlyList<IMapperColumn> columns)
+ /// <param name="schema">Schema.</param>
+ internal RowReader(ref BinaryTupleReader reader, IMapperSchema schema)
{
_reader = reader;
- _columns = columns;
+ _columns = schema.Columns;
}
private readonly IMapperColumn Column