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 bbeccd2e3ec TestSelectAllColumnsStringMapper
bbeccd2e3ec is described below

commit bbeccd2e3ecdcc6e4cffddba65090de3b8f73e0f
Author: Pavel Tupitsyn <[email protected]>
AuthorDate: Wed Dec 24 10:41:37 2025 +0200

    TestSelectAllColumnsStringMapper
---
 .../Sql/SqlResultSetObjectMappingTests.cs          | 67 ++++++++++++++++++++++
 1 file changed, 67 insertions(+)

diff --git 
a/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlResultSetObjectMappingTests.cs
 
b/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlResultSetObjectMappingTests.cs
index 25e739e2db9..b8c4bdd8156 100644
--- 
a/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlResultSetObjectMappingTests.cs
+++ 
b/modules/platforms/dotnet/Apache.Ignite.Tests/Sql/SqlResultSetObjectMappingTests.cs
@@ -18,12 +18,15 @@
 namespace Apache.Ignite.Tests.Sql;
 
 using System;
+using System.Collections.Generic;
 using System.ComponentModel.DataAnnotations.Schema;
 using System.Linq;
+using System.Text;
 using System.Threading;
 using System.Threading.Tasks;
 using Common.Table;
 using Ignite.Sql;
+using Ignite.Table.Mapper;
 using NodaTime;
 using NUnit.Framework;
 using static Common.Table.TestTables;
@@ -119,6 +122,25 @@ public class SqlResultSetObjectMappingTests : 
IgniteTestsBase
         Assert.AreEqual(new PocoAllColumnsSqlNullable(100), rows[Count]);
     }
 
+    [Test]
+    public async Task TestSelectAllColumnsStringMapper()
+    {
+        var resultSet = await Client.Sql.ExecuteAsync(
+                transaction: null,
+                new StringMapper(),
+                "select * from TBL_ALL_COLUMNS_SQL order by KEY LIMIT 1",
+                CancellationToken.None);
+
+        List<string> rows = await resultSet.ToListAsync();
+        string row = rows.Single();
+
+        Assert.AreEqual(
+            "STR=v-0, INT8=1, KEY=0, INT16=2, INT32=3, INT64=4, FLOAT=5.5, 
DOUBLE=6.5, UUID=00000001-0002-0003-0405-060708090a01, " +
+            "DATE=Thursday, December 1, 2022, TIME=11:38:01 AM, TIME2=, 
DATETIME=12/19/2022 11:01:00 AM, DATETIME2=, " +
+            "TIMESTAMP=1970-01-01T00:00:01Z, TIMESTAMP2=, BLOB=System.Byte[], 
DECIMAL=7.7, BOOLEAN=",
+            row);
+    }
+
     [Test]
     public async Task TestSelectUuid()
     {
@@ -263,4 +285,49 @@ public class SqlResultSetObjectMappingTests : 
IgniteTestsBase
     private record ConvertTypeRec(sbyte Key, float Double, double Float, long 
Int8);
 
     private record DateTimeRec(DateTime Dt);
+
+    private class StringMapper : IMapper<string>
+    {
+        public void Write(string obj, ref RowWriter rowWriter, IMapperSchema 
schema) => throw new NotImplementedException();
+
+        public string Read(ref RowReader rowReader, IMapperSchema schema)
+        {
+            var sb = new StringBuilder();
+
+            foreach (var col in schema.Columns)
+            {
+                if (sb.Length > 0)
+                {
+                    sb.Append(", ");
+                }
+
+                object? val = col.Type switch
+                {
+                    ColumnType.Null => null,
+                    ColumnType.Boolean => rowReader.ReadBool(),
+                    ColumnType.Int8 => rowReader.ReadByte(),
+                    ColumnType.Int16 => rowReader.ReadShort(),
+                    ColumnType.Int32 => rowReader.ReadInt(),
+                    ColumnType.Int64 => rowReader.ReadLong(),
+                    ColumnType.Float => rowReader.ReadFloat(),
+                    ColumnType.Double => rowReader.ReadDouble(),
+                    ColumnType.Decimal => rowReader.ReadDecimal(),
+                    ColumnType.Date => rowReader.ReadDate(),
+                    ColumnType.Time => rowReader.ReadTime(),
+                    ColumnType.Datetime => rowReader.ReadDateTime(),
+                    ColumnType.Timestamp => rowReader.ReadTimestamp(),
+                    ColumnType.Uuid => rowReader.ReadGuid(),
+                    ColumnType.String => rowReader.ReadString(),
+                    ColumnType.ByteArray => rowReader.ReadBytes(),
+                    ColumnType.Period => rowReader.ReadPeriod(),
+                    ColumnType.Duration => rowReader.ReadDuration(),
+                    _ => throw new InvalidOperationException("Unexpected 
column type: " + col.Type)
+                };
+
+                sb.Append(col.Name).Append('=').Append(val);
+            }
+
+            return sb.ToString();
+        }
+    }
 }

Reply via email to