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
>> >>>> >>>> >
>> >>>> >>>>
>> >>>> >>>
>> >>>> >>>
>> >>>> >>
>> >>>> >
>> >>>>
>> >>>
>> >>>
>> >>
>> >
>>
>
>

Reply via email to