You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by pt...@apache.org on 2025/07/11 14:29:54 UTC

(ignite-3) 12/45: ExecuteScalarAsync implemented

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

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

commit ebc5b60b87e1dd07e79e94a33fe246be3a305859
Author: Pavel Tupitsyn <pt...@apache.org>
AuthorDate: Fri Jun 27 15:04:23 2025 +0300

    ExecuteScalarAsync implemented
---
 .../DataCommon/IgniteCommand.cs                    | 23 ++++++++++++++++++++--
 1 file changed, 21 insertions(+), 2 deletions(-)

diff --git a/modules/platforms/dotnet/Apache.Ignite.EntityFrameworkCore/DataCommon/IgniteCommand.cs b/modules/platforms/dotnet/Apache.Ignite.EntityFrameworkCore/DataCommon/IgniteCommand.cs
index ee52b2cd105..0ee5eb31d82 100644
--- a/modules/platforms/dotnet/Apache.Ignite.EntityFrameworkCore/DataCommon/IgniteCommand.cs
+++ b/modules/platforms/dotnet/Apache.Ignite.EntityFrameworkCore/DataCommon/IgniteCommand.cs
@@ -78,9 +78,28 @@ public class IgniteCommand : DbCommand
         return (int)resultSet.AffectedRows;
     }
 
-    public override Task<object> ExecuteScalarAsync(CancellationToken cancellationToken)
+    public override async Task<object> ExecuteScalarAsync(CancellationToken cancellationToken)
     {
-        throw new NotImplementedException();
+        var args = GetArgs();
+        var statement = GetStatement();
+
+        // TODO: Remove debug output.
+        Console.WriteLine($"IgniteCommand.ExecuteScalarAsync [statement={statement}, parameters={string.Join(", ", args)}]");
+
+        // TODO: Propagate transaction somehow.
+        await using IResultSet<object> resultSet = await GetSql().ExecuteAsync<object>(
+            transaction: null,
+            statement,
+            cancellationToken,
+            args);
+
+        await foreach (var row in resultSet)
+        {
+            // Return the first result.
+            return row;
+        }
+
+        throw new InvalidOperationException("Query returned no results: " + statement);
     }
 
     public override object ExecuteScalar() => ExecuteScalarAsync().GetAwaiter().GetResult();