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 4bea46cc3b31f33c74cc1695996689a1da8552ef Author: Pavel Tupitsyn <[email protected]> AuthorDate: Tue Dec 23 12:47:53 2025 +0200 wip SQL --- .../dotnet/Apache.Ignite/Internal/Sql/Sql.cs | 24 ++++++++++++++++++++++ modules/platforms/dotnet/Apache.Ignite/Sql/ISql.cs | 18 ++++++++++++++++ 2 files changed, 42 insertions(+) diff --git a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/Sql.cs b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/Sql.cs index 2c955ebb201..038b50f03f2 100644 --- a/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/Sql.cs +++ b/modules/platforms/dotnet/Apache.Ignite/Internal/Sql/Sql.cs @@ -27,6 +27,7 @@ namespace Apache.Ignite.Internal.Sql using Common; using Ignite.Sql; using Ignite.Table; + using Ignite.Table.Mapper; using Ignite.Transactions; using Linq; using Proto; @@ -74,6 +75,29 @@ namespace Apache.Ignite.Internal.Sql cancellationToken) .ConfigureAwait(false); + /// <inheritdoc/> + public async Task<IResultSet<T>> ExecuteAsync<T>( + ITransaction? transaction, + SqlStatement statement, + IMapper<T> mapper, + CancellationToken cancellationToken, + params object?[]? args) + { + // TODO: Cache or avoid allocation? + RowReaderFactory<T> rowReaderFactory = cols => + { + return (IReadOnlyList<IColumnMetadata> list, ref BinaryTupleReader reader) => { return default(T)!; }; + }; + + return await ExecuteAsyncInternal( + transaction, + statement, + rowReaderFactory, + args, + cancellationToken) + .ConfigureAwait(false); + } + /// <inheritdoc/> public async Task<IgniteDbDataReader> ExecuteReaderAsync( ITransaction? transaction, SqlStatement statement, CancellationToken cancellationToken, params object?[]? args) diff --git a/modules/platforms/dotnet/Apache.Ignite/Sql/ISql.cs b/modules/platforms/dotnet/Apache.Ignite/Sql/ISql.cs index 3122de15909..656a0f27250 100644 --- a/modules/platforms/dotnet/Apache.Ignite/Sql/ISql.cs +++ b/modules/platforms/dotnet/Apache.Ignite/Sql/ISql.cs @@ -24,6 +24,7 @@ namespace Apache.Ignite.Sql using System.Threading.Tasks; using Internal.Table.Serialization; using Table; + using Table.Mapper; using Transactions; /// <summary> @@ -77,6 +78,23 @@ namespace Apache.Ignite.Sql Task<IResultSet<T>> ExecuteAsync<T>( ITransaction? transaction, SqlStatement statement, CancellationToken cancellationToken, params object?[]? args); + /// <summary> + /// Executes a single SQL statement and returns rows deserialized into the specified user type <typeparamref name="T"/>. + /// </summary> + /// <param name="transaction">Optional transaction.</param> + /// <param name="statement">Statement to execute.</param> + /// <param name="mapper">Mapper for the result type.</param> + /// <param name="cancellationToken">Cancellation token.</param> + /// <param name="args">Arguments for the statement.</param> + /// <typeparam name="T">Row type.</typeparam> + /// <returns>SQL result set.</returns> + Task<IResultSet<T>> ExecuteAsync<T>( + ITransaction? transaction, + SqlStatement statement, + IMapper<T> mapper, + CancellationToken cancellationToken, + params object?[]? args); + /// <summary> /// Executes a single SQL statement and returns a <see cref="DbDataReader"/> to consume them in an efficient, forward-only way. /// </summary>
