Vyacheslav, Overall looks good. But why do you use -0x80 instead of 0x80?
Best Regards, Igor On Mon, Feb 6, 2017 at 5:36 PM, Vyacheslav Daradur <daradu...@gmail.com> wrote: > Igor, > > I didn't change the CPP code before approval approach. > I shall write directly, sorry. > > But I made CPP changes already. > > > TestEscConvertFunctionFloat > > TestEscConvertFunctionDouble. > These tests were passed > <http://ci.ignite.apache.org/viewQueued.html?itemId=445824> > > > > 2017-02-06 13:20 GMT+03:00 Pavel Tupitsyn <ptupit...@apache.org>: > >> .NET changes look good to me. >> >> Pavel >> >> On Mon, Feb 6, 2017 at 1:10 PM, Igor Sapego <isap...@gridgain.com> wrote: >> >> > Vyacheslav, I can see two ODBC tests fail in C++ test suits that should >> > not: >> > - TestEscConvertFunctionFloat >> > <http://ci.ignite.apache.org/viewLog.html?buildId=444207&tab >> =buildResultsDiv&buildTypeId=IgniteTests_IgnitePlatformCppLi >> nux#testNameId-9178617718508801660> >> > - TestEscConvertFunctionDouble >> > <http://ci.ignite.apache.org/viewLog.html?buildId=444207&tab >> =buildResultsDiv&buildTypeId=IgniteTests_IgnitePlatformCppLi >> nux#testNameId5432107083822590090> >> > . >> > >> > I believe, this is because I can't see any changes in C++ Decimal >> > marshaling code. >> > Please, pay attention to file ignite\modules\platforms\cpp\ >> > odbc\src\utility.cpp, >> > functions ReadDecimal and WriteDecimal. >> > >> > Best Regards, >> > Igor >> > >> > On Mon, Feb 6, 2017 at 11:21 AM, Vyacheslav Daradur < >> daradu...@gmail.com> >> > wrote: >> > >> >> Pavel, Igor >> >> >> >> Please, review it again. >> >> >> >> https://github.com/apache/ignite/pull/1473/files >> >> >> >> All tests >> >> <http://ci.ignite.apache.org/viewLog.html?buildId=444231&tab >> =buildResultsDiv&buildTypeId=IgniteTests_RunAll> >> >> .NET tests >> >> <http://ci.ignite.apache.org/viewLog.html?buildId=443439&tab >> =buildResultsDiv&buildTypeId=IgniteTests_IgnitePlatformNet> >> >> >> >> How about this solution? >> >> >> >> 2017-02-03 13:59 GMT+03:00 Vyacheslav Daradur <daradu...@gmail.com>: >> >> >> >>> 1. On my first question >> >>> I think up, if we serialize only positive numbers, we can write sign >> in >> >>> first byte, because it is positive always. >> >>> I will try to make this decision >> >>> >> >>> 2017-02-03 12:48 GMT+03:00 Pavel Tupitsyn <ptupit...@apache.org>: >> >>> >> >>>> Vyacheslav, >> >>>> >> >>>> I see the problem now. Yes, negative scale is not supported in .NET. >> >>>> >> >>>> I don't think we should do the multiplication. As you described, this >> >>>> will >> >>>> break equality on Java side. SQL queries might be broken, etc. >> >>>> I think we should throw an exception in .NET when encountering >> negative >> >>>> decimal scale. >> >>>> >> >>>> Vladimir O, any thoughts? >> >>>> >> >>>> Pavel >> >>>> >> >>>> On Fri, Feb 3, 2017 at 12:01 PM, Vyacheslav Daradur < >> >>>> daradu...@gmail.com> >> >>>> wrote: >> >>>> >> >>>> > Hello. >> >>>> > >> >>>> > I looked and understood the code of methods ReadDecimal and >> >>>> WriteDecimal >> >>>> > on .NET platform. >> >>>> > >> >>>> > 1. At the moment remaking of this methods for my Java-decimal-fix >> is >> >>>> very >> >>>> > difficult, it needs to write new methods for >> >>>> serialization/deserialization >> >>>> > of negative decimals. >> >>>> > >> >>>> > I can make it, but there is simpler decision: to add additional >> byte >> >>>> for >> >>>> > sign. >> >>>> > >> >>>> > I need advice: difficult solution (new methods .net) Versus : >> simple >> >>>> > solutions (additional byte)? >> >>>> > >> >>>> > *I don't know yet, what changes are necessary on ะก++ platform. >> >>>> > >> >>>> > 2. I see a problem with the negative scale on .NET platform. >> >>>> > >> >>>> > Now negative scale is forbidden. >> >>>> > >> >>>> > We can make: >> >>>> > if (scale < 0) return Decimal.Multiply(new decimal(lo, mid, hi, >> neg, >> >>>> 0), >> >>>> > new decimal(Math.Pow(10, -scale))); >> >>>> > >> >>>> > But there is the problem: >> >>>> > * 1 Serialize in Java; number=123456789, scale=-4 >> >>>> > * 2 Deserialize in .NET; number=1234567890000, scale=0 >> >>>> > * 3 Serialize in .NET; number=1234567890000, scale=0 >> >>>> > * 4 Deserialize in Java; number=1234567890000, scale=0 >> >>>> > >> >>>> > Logically: (1) 123456789 * 10^4 == (2) 1234567890000 >> >>>> > >> >>>> > In Java (1) not equal (2), because scales are different. >> >>>> > >> >>>> > Any thougths? >> >>>> > >> >>>> > 2017-01-31 14:08 GMT+03:00 Pavel Tupitsyn <ptupit...@apache.org>: >> >>>> > >> >>>> >> Vyacheslav, >> >>>> >> >> >>>> >> I'm not sure I understand the code you attached. >> >>>> >> >> >>>> >> If you know how to fix the .NET part, can you just do it in your >> PR >> >>>> and >> >>>> >> run "Platform .NET" on TeamCity to verify? >> >>>> >> http://ci.ignite.apache.org/viewType.html?buildTypeId=Ignite >> >>>> >> Tests_IgnitePlatformNet >> >>>> >> >> >>>> >> Thanks, >> >>>> >> >> >>>> >> Pavel >> >>>> >> >> >>>> >> On Tue, Jan 31, 2017 at 1:35 PM, Vyacheslav Daradur < >> >>>> daradu...@gmail.com> >> >>>> >> wrote: >> >>>> >> >> >>>> >>> Pavel, I see that you are the main contributor of Ignite.NET. >> >>>> >>> >> >>>> >>> We should repair BinaryUtils#ReadDecimal and >> >>>> BinaryUtils#WriteDecimal. >> >>>> >>> >> >>>> >>> *ReadDecimal: >> >>>> >>> byte[] mag = ReadByteArray(stream); // including at least one >> sign >> >>>> bit, >> >>>> >>> which is (ceil((this.bitLength() + 1)/8)) >> >>>> >>> bool neg = (mag[0] < 0); >> >>>> >>> if (scale < 0) >> >>>> >>> // TODO: a scale of -3 means the unscaled value is multiplied by >> >>>> 1000 >> >>>> >>> >> >>>> >>> *WriteDecimal: >> >>>> >>> int sign = vals[3] < 0 ? -1 : 0; >> >>>> >>> stream.WriteInt(sign); >> >>>> >>> >> >>>> >>> Can you help with this task? >> >>>> >>> >> >>>> >>> >> >>>> >>> 2017-01-31 12:46 GMT+03:00 Igor Sapego <isap...@gridgain.com>: >> >>>> >>> >> >>>> >>>> Vyacheslav, >> >>>> >>>> >> >>>> >>>> I had a look at your PR and left some comments in Jira. >> >>>> >>>> >> >>>> >>>> Best Regards, >> >>>> >>>> Igor >> >>>> >>>> >> >>>> >>>> On Mon, Jan 30, 2017 at 12:52 PM, Vyacheslav Daradur < >> >>>> >>>> daradu...@gmail.com> >> >>>> >>>> wrote: >> >>>> >>>> >> >>>> >>>> > Hello. I fixed it. Please, review. >> >>>> >>>> > >> >>>> >>>> > https://issues.apache.org/jira/browse/IGNITE-3196 - >> Marshaling >> >>>> works >> >>>> >>>> wrong >> >>>> >>>> > for the BigDecimals that have negative scale >> >>>> >>>> > >> >>>> >>>> >> >>>> >>> >> >>>> >>> >> >>>> >> >> >>>> > >> >>>> >> >>> >> >>> >> >> >> > >> > >