You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Vladimir Ozerov (JIRA)" <ji...@apache.org> on 2015/10/27 11:50:27 UTC
[jira] [Closed] (IGNITE-1644) .Net: DateTime.Kind is lost during
serialization
[ https://issues.apache.org/jira/browse/IGNITE-1644?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Vladimir Ozerov closed IGNITE-1644.
-----------------------------------
> .Net: DateTime.Kind is lost during serialization
> ------------------------------------------------
>
> Key: IGNITE-1644
> URL: https://issues.apache.org/jira/browse/IGNITE-1644
> Project: Ignite
> Issue Type: Bug
> Components: interop
> Affects Versions: 1.5
> Reporter: Pavel Tupitsyn
> Assignee: Vladimir Ozerov
> Fix For: 1.5
>
>
> Add the following test to PortableSelfTest.cs:
> {code}
> [Test]
> public void TestWriteDate()
> {
> DateTime time = DateTime.Now;
> DateTime timeUtc = DateTime.UtcNow;
> Assert.AreEqual(_marsh.Unmarshal<DateTime>(_marsh.Marshal(time)), time);
> Assert.AreEqual(_marsh.Unmarshal<DateTime>(_marsh.Marshal(timeUtc)), timeUtc);
> }
> {code}
> Observe that it fails becuase we loose DateTimeKind.
> This happens because we always write DateTime as UTC and lose DateTime.Kind, so on deserialization we do not know whether ToLocal should be called.
> DateTime must be serialized in portable form only in two cases:
> 1) IPortableWriter.WriteDate()
> 2) IPortableWriter.WriteDateArray()
> In these cases we should throw exception on a non-UTC date.
> In all other cases it should be serialized in some other form. E.g., we can introduce new wrapper type ".NET-specific" and wrap DateTime, Collections, Arrays (IGNITE-1779) in it.
> This will break queries to some extent.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)