But that's Ok. Since we use int8_t for bytes in C++ as well I guess
your -0x80 may have more sense than 0x80.

Best Regards,
Igor

On Tue, Feb 7, 2017 at 1:54 PM, Igor Sapego <isap...@gridgain.com> wrote:

> I was just curious.
>
> In C++ both constants 0x80 and -0x80 are of type 'int' and have the same
> lower byte, so they give the same result. Though first number is actually
> 0x00000080 when the second one is 0xFFFFFF80.
>
> So it's just made a minus sign look a little redundant and pointless to me
> in C++ code.
>
> Best Regards,
> Igor
>
> On Mon, Feb 6, 2017 at 10:15 PM, Vyacheslav Daradur <daradu...@gmail.com>
> wrote:
>
>> Byte.MIN_VALUE = -128 = -0x80
>> Byte.MAX_VALUE = 127 = 0x7F
>>
>> It is just more evident for me.
>>
>> Maybe, I just have the Java programming style.
>>
>> In Java:
>> byte a = 100 | -0x80;  // compiled
>> byte b = 100 | 0x80;  // doesn't compile, explicit type casting is
>> neccessary (byte)(100 | 0x80)
>> System.out.println(a | -0x80); // -28
>> System.out.println(a | 0x80); // 228 - cast to int
>>
>> Is it bad style?
>>
>> 2017-02-06 20:04 GMT+03:00 Igor Sapego <isap...@gridgain.com>:
>>
>>> 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