[ 
https://issues.apache.org/jira/browse/IGNITE-27655?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18056432#comment-18056432
 ] 

Igor Sapego commented on IGNITE-27655:
--------------------------------------

LGTM

> .NET: GetPartitionAsync(tuple) fails on non-key columns
> -------------------------------------------------------
>
>                 Key: IGNITE-27655
>                 URL: https://issues.apache.org/jira/browse/IGNITE-27655
>             Project: Ignite
>          Issue Type: Bug
>          Components: platforms ai3, thin clients ai3
>            Reporter: Pavel Tupitsyn
>            Assignee: Pavel Tupitsyn
>            Priority: Major
>              Labels: ignite-3
>             Fix For: 3.2
>
>
> GetPartitionAsync fails on a full tuple (key+val):
> {code}
> var tuple1 = GetTuple(1, "foo");
> await Table.RecordBinaryView.UpsertAsync(null, tuple1); // Ok
> await Table.PartitionDistribution.GetPartitionAsync(tuple1); // Fail
> {code}
> Exception:
> {code}
> System.ArgumentException : Tuple doesn't match schema: schemaVersion=1, 
> extraColumns=VAL
> Data:
>   UnmappedColumnsPresent: True
>    at 
> Apache.Ignite.Internal.Table.Serialization.TupleSerializerHandler.ValidateMappedCount(IIgniteTuple
>  record, Schema schema, Int32 columnCount, Int32 written) in 
> /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/TupleSerializerHandler.cs:line
>  146
>    at 
> Apache.Ignite.Internal.Table.Serialization.TupleSerializerHandler.Write(BinaryTupleBuilder&
>  tupleBuilder, IIgniteTuple record, Schema schema, Boolean keyOnly, Span`1 
> noValueSet) in 
> /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/TupleSerializerHandler.cs:line
>  117
>    at 
> Apache.Ignite.Internal.Table.Serialization.IRecordSerializerHandler`1.GetKeyColocationHash(Schema
>  schema, T key) in 
> /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Table/Serialization/IRecordSerializerHandler.cs:line
>  82
>    at 
> Apache.Ignite.Internal.Table.PartitionManager.GetPartitionInternalAsync[TK](TK
>  key, IRecordSerializerHandler`1 serializerHandler) in 
> /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite/Internal/Table/PartitionManager.cs:line
>  232
>    at Apache.Ignite.Tests.Table.RecordViewBinaryTests.TestUpsertGet() in 
> /home/pavel/w/ignite-3/modules/platforms/dotnet/Apache.Ignite.Tests/Table/RecordViewBinaryTests.cs:line
>  45
> {code}
> This works in Java:
> {code}
>     @Test
>     public void testGetPartitionForKeyIgnoresExtraColumns() {
>         Tuple keyTuple = Tuple.create().set("key", 42);
>         Tuple fullTuple = Tuple.create().set("key", 42).set("val", "unused");
>         var part1 = partitionDistribution().partition(keyTuple);
>         var part2 = partitionDistribution().partition(fullTuple);
>         assertThat(part1, equalTo(part2));
>     }
> {code}
> We should not force the user to remove value columns just to compute the 
> partition.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to