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