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();
+ }
+ }
}