[jira] [Commented] (ARROW-2387) negative decimal values get spurious rescaling error
[ https://issues.apache.org/jira/browse/ARROW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16437832#comment-16437832 ] ASF GitHub Bot commented on ARROW-2387: --- cpcloud commented on issue #1832: ARROW-2387: [Python] Flip test for rescale loss if value < 0 URL: https://github.com/apache/arrow/pull/1832#issuecomment-381246201 Sweet! Merging. Thank you! This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > negative decimal values get spurious rescaling error > > > Key: ARROW-2387 > URL: https://issues.apache.org/jira/browse/ARROW-2387 > Project: Apache Arrow > Issue Type: Bug >Affects Versions: 0.9.0 >Reporter: ben w >Assignee: Phillip Cloud >Priority: Major > Labels: pull-request-available > > {code:java} > $ python > Python 2.7.12 (default, Nov 20 2017, 18:23:56) > [GCC 5.4.0 20160609] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import pyarrow as pa, decimal > >>> one = decimal.Decimal('1.00') > >>> neg_one = decimal.Decimal('-1.00') > >>> pa.array([one], pa.decimal128(24, 12)) > > [ > Decimal('1.') > ] > >>> pa.array([neg_one], pa.decimal128(24, 12)) > Traceback (most recent call last): > File "", line 1, in > File "array.pxi", line 181, in pyarrow.lib.array > File "array.pxi", line 36, in pyarrow.lib._sequence_to_array > File "error.pxi", line 77, in pyarrow.lib.check_status > pyarrow.lib.ArrowInvalid: Rescaling decimal value -100.00 from > original scale of 6 to new scale of 12 would cause data loss > >>> pa.__version__ > '0.9.0' > {code} > not only is the error spurious, the decimal value has been multiplied by one > million (i.e. 10 ** 6 and 6 is the difference in scales, but this is still > pretty strange to me). -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARROW-2387) negative decimal values get spurious rescaling error
[ https://issues.apache.org/jira/browse/ARROW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16437822#comment-16437822 ] ASF GitHub Bot commented on ARROW-2387: --- bwo commented on issue #1832: ARROW-2387: [Python] Flip test for rescale loss if value < 0 URL: https://github.com/apache/arrow/pull/1832#issuecomment-381244400 hooray! This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > negative decimal values get spurious rescaling error > > > Key: ARROW-2387 > URL: https://issues.apache.org/jira/browse/ARROW-2387 > Project: Apache Arrow > Issue Type: Bug >Affects Versions: 0.9.0 >Reporter: ben w >Assignee: Phillip Cloud >Priority: Major > Labels: pull-request-available > > {code:java} > $ python > Python 2.7.12 (default, Nov 20 2017, 18:23:56) > [GCC 5.4.0 20160609] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import pyarrow as pa, decimal > >>> one = decimal.Decimal('1.00') > >>> neg_one = decimal.Decimal('-1.00') > >>> pa.array([one], pa.decimal128(24, 12)) > > [ > Decimal('1.') > ] > >>> pa.array([neg_one], pa.decimal128(24, 12)) > Traceback (most recent call last): > File "", line 1, in > File "array.pxi", line 181, in pyarrow.lib.array > File "array.pxi", line 36, in pyarrow.lib._sequence_to_array > File "error.pxi", line 77, in pyarrow.lib.check_status > pyarrow.lib.ArrowInvalid: Rescaling decimal value -100.00 from > original scale of 6 to new scale of 12 would cause data loss > >>> pa.__version__ > '0.9.0' > {code} > not only is the error spurious, the decimal value has been multiplied by one > million (i.e. 10 ** 6 and 6 is the difference in scales, but this is still > pretty strange to me). -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARROW-2387) negative decimal values get spurious rescaling error
[ https://issues.apache.org/jira/browse/ARROW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16436352#comment-16436352 ] ASF GitHub Bot commented on ARROW-2387: --- cpcloud commented on issue #1832: ARROW-2387: [Python] Flip test for rescale loss if value < 0 URL: https://github.com/apache/arrow/pull/1832#issuecomment-380955656 @bwo Yes. This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > negative decimal values get spurious rescaling error > > > Key: ARROW-2387 > URL: https://issues.apache.org/jira/browse/ARROW-2387 > Project: Apache Arrow > Issue Type: Bug >Affects Versions: 0.9.0 >Reporter: ben w >Assignee: Phillip Cloud >Priority: Major > Labels: pull-request-available > > {code:java} > $ python > Python 2.7.12 (default, Nov 20 2017, 18:23:56) > [GCC 5.4.0 20160609] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import pyarrow as pa, decimal > >>> one = decimal.Decimal('1.00') > >>> neg_one = decimal.Decimal('-1.00') > >>> pa.array([one], pa.decimal128(24, 12)) > > [ > Decimal('1.') > ] > >>> pa.array([neg_one], pa.decimal128(24, 12)) > Traceback (most recent call last): > File "", line 1, in > File "array.pxi", line 181, in pyarrow.lib.array > File "array.pxi", line 36, in pyarrow.lib._sequence_to_array > File "error.pxi", line 77, in pyarrow.lib.check_status > pyarrow.lib.ArrowInvalid: Rescaling decimal value -100.00 from > original scale of 6 to new scale of 12 would cause data loss > >>> pa.__version__ > '0.9.0' > {code} > not only is the error spurious, the decimal value has been multiplied by one > million (i.e. 10 ** 6 and 6 is the difference in scales, but this is still > pretty strange to me). -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARROW-2387) negative decimal values get spurious rescaling error
[ https://issues.apache.org/jira/browse/ARROW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16436350#comment-16436350 ] ASF GitHub Bot commented on ARROW-2387: --- bwo commented on issue #1832: ARROW-2387: [Python] Flip test for rescale loss if value < 0 URL: https://github.com/apache/arrow/pull/1832#issuecomment-380954273 Seems to be failing on something Ruby-related? Should I rebase again? This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > negative decimal values get spurious rescaling error > > > Key: ARROW-2387 > URL: https://issues.apache.org/jira/browse/ARROW-2387 > Project: Apache Arrow > Issue Type: Bug >Affects Versions: 0.9.0 >Reporter: ben w >Assignee: Phillip Cloud >Priority: Major > Labels: pull-request-available > > {code:java} > $ python > Python 2.7.12 (default, Nov 20 2017, 18:23:56) > [GCC 5.4.0 20160609] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import pyarrow as pa, decimal > >>> one = decimal.Decimal('1.00') > >>> neg_one = decimal.Decimal('-1.00') > >>> pa.array([one], pa.decimal128(24, 12)) > > [ > Decimal('1.') > ] > >>> pa.array([neg_one], pa.decimal128(24, 12)) > Traceback (most recent call last): > File "", line 1, in > File "array.pxi", line 181, in pyarrow.lib.array > File "array.pxi", line 36, in pyarrow.lib._sequence_to_array > File "error.pxi", line 77, in pyarrow.lib.check_status > pyarrow.lib.ArrowInvalid: Rescaling decimal value -100.00 from > original scale of 6 to new scale of 12 would cause data loss > >>> pa.__version__ > '0.9.0' > {code} > not only is the error spurious, the decimal value has been multiplied by one > million (i.e. 10 ** 6 and 6 is the difference in scales, but this is still > pretty strange to me). -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARROW-2387) negative decimal values get spurious rescaling error
[ https://issues.apache.org/jira/browse/ARROW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16431508#comment-16431508 ] ASF GitHub Bot commented on ARROW-2387: --- cpcloud commented on issue #1832: ARROW-2387: flip test for rescale loss if value < 0 URL: https://github.com/apache/arrow/pull/1832#issuecomment-379927866 @bwo Looks like this is failing for unrelated reasons, can you rebase on top of master and push again? Then we can merge. This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > negative decimal values get spurious rescaling error > > > Key: ARROW-2387 > URL: https://issues.apache.org/jira/browse/ARROW-2387 > Project: Apache Arrow > Issue Type: Bug >Affects Versions: 0.9.0 >Reporter: ben w >Assignee: Phillip Cloud >Priority: Major > Labels: pull-request-available > > {code:java} > $ python > Python 2.7.12 (default, Nov 20 2017, 18:23:56) > [GCC 5.4.0 20160609] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import pyarrow as pa, decimal > >>> one = decimal.Decimal('1.00') > >>> neg_one = decimal.Decimal('-1.00') > >>> pa.array([one], pa.decimal128(24, 12)) > > [ > Decimal('1.') > ] > >>> pa.array([neg_one], pa.decimal128(24, 12)) > Traceback (most recent call last): > File "", line 1, in > File "array.pxi", line 181, in pyarrow.lib.array > File "array.pxi", line 36, in pyarrow.lib._sequence_to_array > File "error.pxi", line 77, in pyarrow.lib.check_status > pyarrow.lib.ArrowInvalid: Rescaling decimal value -100.00 from > original scale of 6 to new scale of 12 would cause data loss > >>> pa.__version__ > '0.9.0' > {code} > not only is the error spurious, the decimal value has been multiplied by one > million (i.e. 10 ** 6 and 6 is the difference in scales, but this is still > pretty strange to me). -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARROW-2387) negative decimal values get spurious rescaling error
[ https://issues.apache.org/jira/browse/ARROW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16427618#comment-16427618 ] ASF GitHub Bot commented on ARROW-2387: --- bwo commented on a change in pull request #1832: ARROW-2387: flip test for rescale loss if value < 0 URL: https://github.com/apache/arrow/pull/1832#discussion_r179603633 ## File path: cpp/src/arrow/util/decimal.cc ## @@ -831,7 +831,7 @@ static bool RescaleWouldCauseDataLoss(const Decimal128& value, int32_t delta_sca } *result = value * multiplier; - return *result < value; + return (value < 0) ? *result < value : *result > value; Review comment: the check was in fact backward (for entirely stupid reasons). Do you want me to use an actual absolute value method or is it fine now? This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > negative decimal values get spurious rescaling error > > > Key: ARROW-2387 > URL: https://issues.apache.org/jira/browse/ARROW-2387 > Project: Apache Arrow > Issue Type: Bug >Affects Versions: 0.9.0 >Reporter: ben w >Assignee: Phillip Cloud >Priority: Major > Labels: pull-request-available > > {code:java} > $ python > Python 2.7.12 (default, Nov 20 2017, 18:23:56) > [GCC 5.4.0 20160609] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import pyarrow as pa, decimal > >>> one = decimal.Decimal('1.00') > >>> neg_one = decimal.Decimal('-1.00') > >>> pa.array([one], pa.decimal128(24, 12)) > > [ > Decimal('1.') > ] > >>> pa.array([neg_one], pa.decimal128(24, 12)) > Traceback (most recent call last): > File "", line 1, in > File "array.pxi", line 181, in pyarrow.lib.array > File "array.pxi", line 36, in pyarrow.lib._sequence_to_array > File "error.pxi", line 77, in pyarrow.lib.check_status > pyarrow.lib.ArrowInvalid: Rescaling decimal value -100.00 from > original scale of 6 to new scale of 12 would cause data loss > >>> pa.__version__ > '0.9.0' > {code} > not only is the error spurious, the decimal value has been multiplied by one > million (i.e. 10 ** 6 and 6 is the difference in scales, but this is still > pretty strange to me). -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARROW-2387) negative decimal values get spurious rescaling error
[ https://issues.apache.org/jira/browse/ARROW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16427017#comment-16427017 ] ASF GitHub Bot commented on ARROW-2387: --- cpcloud commented on a change in pull request #1832: ARROW-2387: flip test for rescale loss if value < 0 URL: https://github.com/apache/arrow/pull/1832#discussion_r179481328 ## File path: cpp/src/arrow/util/decimal.cc ## @@ -831,7 +831,7 @@ static bool RescaleWouldCauseDataLoss(const Decimal128& value, int32_t delta_sca } *result = value * multiplier; - return *result < value; + return (value < 0) ? *result < value : *result > value; Review comment: I don't think this is the correct check. It should be sufficient to check that the absolute value of `*result` is less than the absolute value of `value`. This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > negative decimal values get spurious rescaling error > > > Key: ARROW-2387 > URL: https://issues.apache.org/jira/browse/ARROW-2387 > Project: Apache Arrow > Issue Type: Bug >Affects Versions: 0.9.0 >Reporter: ben w >Assignee: Phillip Cloud >Priority: Major > Labels: pull-request-available > > {code:java} > $ python > Python 2.7.12 (default, Nov 20 2017, 18:23:56) > [GCC 5.4.0 20160609] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import pyarrow as pa, decimal > >>> one = decimal.Decimal('1.00') > >>> neg_one = decimal.Decimal('-1.00') > >>> pa.array([one], pa.decimal128(24, 12)) > > [ > Decimal('1.') > ] > >>> pa.array([neg_one], pa.decimal128(24, 12)) > Traceback (most recent call last): > File "", line 1, in > File "array.pxi", line 181, in pyarrow.lib.array > File "array.pxi", line 36, in pyarrow.lib._sequence_to_array > File "error.pxi", line 77, in pyarrow.lib.check_status > pyarrow.lib.ArrowInvalid: Rescaling decimal value -100.00 from > original scale of 6 to new scale of 12 would cause data loss > >>> pa.__version__ > '0.9.0' > {code} > not only is the error spurious, the decimal value has been multiplied by one > million (i.e. 10 ** 6 and 6 is the difference in scales, but this is still > pretty strange to me). -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARROW-2387) negative decimal values get spurious rescaling error
[ https://issues.apache.org/jira/browse/ARROW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16427016#comment-16427016 ] ASF GitHub Bot commented on ARROW-2387: --- cpcloud commented on a change in pull request #1832: ARROW-2387: flip test for rescale loss if value < 0 URL: https://github.com/apache/arrow/pull/1832#discussion_r179473132 ## File path: cpp/src/arrow/python/python-test.cc ## @@ -246,6 +246,16 @@ TEST_F(DecimalTest, FromPythonDecimalRescaleTruncateable) { ASSERT_EQ(100, value.low_bits()); } +TEST_F(DecimalTest, FromPythonNegativeDecimalRescale) { + Decimal128 value; + OwnedRef python_decimal(this->CreatePythonDecimal("-1.000")); + auto type = ::arrow::decimal(10, 9); + const auto& decimal_type = static_cast(*type); + ASSERT_OK( + internal::DecimalFromPythonDecimal(python_decimal.obj(), decimal_type, )); + ASSERT_EQ(-10, (int64_t)(value)); Review comment: Don't cast here. The `operator==` definition + implicit casting rules of C++ handle that. This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > negative decimal values get spurious rescaling error > > > Key: ARROW-2387 > URL: https://issues.apache.org/jira/browse/ARROW-2387 > Project: Apache Arrow > Issue Type: Bug >Affects Versions: 0.9.0 >Reporter: ben w >Assignee: Phillip Cloud >Priority: Major > Labels: pull-request-available > > {code:java} > $ python > Python 2.7.12 (default, Nov 20 2017, 18:23:56) > [GCC 5.4.0 20160609] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import pyarrow as pa, decimal > >>> one = decimal.Decimal('1.00') > >>> neg_one = decimal.Decimal('-1.00') > >>> pa.array([one], pa.decimal128(24, 12)) > > [ > Decimal('1.') > ] > >>> pa.array([neg_one], pa.decimal128(24, 12)) > Traceback (most recent call last): > File "", line 1, in > File "array.pxi", line 181, in pyarrow.lib.array > File "array.pxi", line 36, in pyarrow.lib._sequence_to_array > File "error.pxi", line 77, in pyarrow.lib.check_status > pyarrow.lib.ArrowInvalid: Rescaling decimal value -100.00 from > original scale of 6 to new scale of 12 would cause data loss > >>> pa.__version__ > '0.9.0' > {code} > not only is the error spurious, the decimal value has been multiplied by one > million (i.e. 10 ** 6 and 6 is the difference in scales, but this is still > pretty strange to me). -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARROW-2387) negative decimal values get spurious rescaling error
[ https://issues.apache.org/jira/browse/ARROW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16425857#comment-16425857 ] ASF GitHub Bot commented on ARROW-2387: --- bwo commented on issue #1832: ARROW-2387: flip test for rescale loss if value < 0 URL: https://github.com/apache/arrow/pull/1832#issuecomment-378671466 Yes I just saw that in the README (which is why I deleted the previous comment, not realizing it would be mirrored to jira :/). Oddly it still changed nine untouched files, but I've just committed the change to python-test.cc to see what happens. This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > negative decimal values get spurious rescaling error > > > Key: ARROW-2387 > URL: https://issues.apache.org/jira/browse/ARROW-2387 > Project: Apache Arrow > Issue Type: Bug >Affects Versions: 0.9.0 >Reporter: ben w >Assignee: Phillip Cloud >Priority: Major > Labels: pull-request-available > > {code:java} > $ python > Python 2.7.12 (default, Nov 20 2017, 18:23:56) > [GCC 5.4.0 20160609] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import pyarrow as pa, decimal > >>> one = decimal.Decimal('1.00') > >>> neg_one = decimal.Decimal('-1.00') > >>> pa.array([one], pa.decimal128(24, 12)) > > [ > Decimal('1.') > ] > >>> pa.array([neg_one], pa.decimal128(24, 12)) > Traceback (most recent call last): > File "", line 1, in > File "array.pxi", line 181, in pyarrow.lib.array > File "array.pxi", line 36, in pyarrow.lib._sequence_to_array > File "error.pxi", line 77, in pyarrow.lib.check_status > pyarrow.lib.ArrowInvalid: Rescaling decimal value -100.00 from > original scale of 6 to new scale of 12 would cause data loss > >>> pa.__version__ > '0.9.0' > {code} > not only is the error spurious, the decimal value has been multiplied by one > million (i.e. 10 ** 6 and 6 is the difference in scales, but this is still > pretty strange to me). -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARROW-2387) negative decimal values get spurious rescaling error
[ https://issues.apache.org/jira/browse/ARROW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16425850#comment-16425850 ] ASF GitHub Bot commented on ARROW-2387: --- bwo commented on issue #1832: ARROW-2387: flip test for rescale loss if value < 0 URL: https://github.com/apache/arrow/pull/1832#issuecomment-378668979 I see that this failed in the format check step, but when I run `make format` (with clang-format-3.9), 13 files are changed, of which only one is a file I changed. Is there a recommended version of clang-format to use? This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > negative decimal values get spurious rescaling error > > > Key: ARROW-2387 > URL: https://issues.apache.org/jira/browse/ARROW-2387 > Project: Apache Arrow > Issue Type: Bug >Affects Versions: 0.9.0 >Reporter: ben w >Assignee: Phillip Cloud >Priority: Major > Labels: pull-request-available > > {code:java} > $ python > Python 2.7.12 (default, Nov 20 2017, 18:23:56) > [GCC 5.4.0 20160609] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import pyarrow as pa, decimal > >>> one = decimal.Decimal('1.00') > >>> neg_one = decimal.Decimal('-1.00') > >>> pa.array([one], pa.decimal128(24, 12)) > > [ > Decimal('1.') > ] > >>> pa.array([neg_one], pa.decimal128(24, 12)) > Traceback (most recent call last): > File "", line 1, in > File "array.pxi", line 181, in pyarrow.lib.array > File "array.pxi", line 36, in pyarrow.lib._sequence_to_array > File "error.pxi", line 77, in pyarrow.lib.check_status > pyarrow.lib.ArrowInvalid: Rescaling decimal value -100.00 from > original scale of 6 to new scale of 12 would cause data loss > >>> pa.__version__ > '0.9.0' > {code} > not only is the error spurious, the decimal value has been multiplied by one > million (i.e. 10 ** 6 and 6 is the difference in scales, but this is still > pretty strange to me). -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARROW-2387) negative decimal values get spurious rescaling error
[ https://issues.apache.org/jira/browse/ARROW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16425843#comment-16425843 ] ASF GitHub Bot commented on ARROW-2387: --- bwo commented on issue #1832: ARROW-2387: flip test for rescale loss if value < 0 URL: https://github.com/apache/arrow/pull/1832#issuecomment-378668979 I see that this failed in the format check step, but when I run `make format` (with clang-format-3.9), 13 files are changed, of which only one is a file I changed. Is there a recommended version of clang-format to use? This is an automated message from the Apache Git Service. To respond to the message, please log on GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org > negative decimal values get spurious rescaling error > > > Key: ARROW-2387 > URL: https://issues.apache.org/jira/browse/ARROW-2387 > Project: Apache Arrow > Issue Type: Bug >Affects Versions: 0.9.0 >Reporter: ben w >Assignee: Phillip Cloud >Priority: Major > Labels: pull-request-available > > {code:java} > $ python > Python 2.7.12 (default, Nov 20 2017, 18:23:56) > [GCC 5.4.0 20160609] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import pyarrow as pa, decimal > >>> one = decimal.Decimal('1.00') > >>> neg_one = decimal.Decimal('-1.00') > >>> pa.array([one], pa.decimal128(24, 12)) > > [ > Decimal('1.') > ] > >>> pa.array([neg_one], pa.decimal128(24, 12)) > Traceback (most recent call last): > File "", line 1, in > File "array.pxi", line 181, in pyarrow.lib.array > File "array.pxi", line 36, in pyarrow.lib._sequence_to_array > File "error.pxi", line 77, in pyarrow.lib.check_status > pyarrow.lib.ArrowInvalid: Rescaling decimal value -100.00 from > original scale of 6 to new scale of 12 would cause data loss > >>> pa.__version__ > '0.9.0' > {code} > not only is the error spurious, the decimal value has been multiplied by one > million (i.e. 10 ** 6 and 6 is the difference in scales, but this is still > pretty strange to me). -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARROW-2387) negative decimal values get spurious rescaling error
[ https://issues.apache.org/jira/browse/ARROW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16424651#comment-16424651 ] ben w commented on ARROW-2387: -- How the actual implementation should work is definitely beyond me, sadly. > negative decimal values get spurious rescaling error > > > Key: ARROW-2387 > URL: https://issues.apache.org/jira/browse/ARROW-2387 > Project: Apache Arrow > Issue Type: Bug >Affects Versions: 0.9.0 >Reporter: ben w >Assignee: Phillip Cloud >Priority: Major > > {code:java} > $ python > Python 2.7.12 (default, Nov 20 2017, 18:23:56) > [GCC 5.4.0 20160609] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import pyarrow as pa, decimal > >>> one = decimal.Decimal('1.00') > >>> neg_one = decimal.Decimal('-1.00') > >>> pa.array([one], pa.decimal128(24, 12)) > > [ > Decimal('1.') > ] > >>> pa.array([neg_one], pa.decimal128(24, 12)) > Traceback (most recent call last): > File "", line 1, in > File "array.pxi", line 181, in pyarrow.lib.array > File "array.pxi", line 36, in pyarrow.lib._sequence_to_array > File "error.pxi", line 77, in pyarrow.lib.check_status > pyarrow.lib.ArrowInvalid: Rescaling decimal value -100.00 from > original scale of 6 to new scale of 12 would cause data loss > >>> pa.__version__ > '0.9.0' > {code} > not only is the error spurious, the decimal value has been multiplied by one > million (i.e. 10 ** 6 and 6 is the difference in scales, but this is still > pretty strange to me). -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARROW-2387) negative decimal values get spurious rescaling error
[ https://issues.apache.org/jira/browse/ARROW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16424641#comment-16424641 ] Phillip Cloud commented on ARROW-2387: -- Feel to add a test and fix if you'd like. I will happily review it. If you don't beat me to it I can put up a fix as early as next week. > negative decimal values get spurious rescaling error > > > Key: ARROW-2387 > URL: https://issues.apache.org/jira/browse/ARROW-2387 > Project: Apache Arrow > Issue Type: Bug >Affects Versions: 0.9.0 >Reporter: ben w >Assignee: Phillip Cloud >Priority: Major > > {code:java} > $ python > Python 2.7.12 (default, Nov 20 2017, 18:23:56) > [GCC 5.4.0 20160609] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import pyarrow as pa, decimal > >>> one = decimal.Decimal('1.00') > >>> neg_one = decimal.Decimal('-1.00') > >>> pa.array([one], pa.decimal128(24, 12)) > > [ > Decimal('1.') > ] > >>> pa.array([neg_one], pa.decimal128(24, 12)) > Traceback (most recent call last): > File "", line 1, in > File "array.pxi", line 181, in pyarrow.lib.array > File "array.pxi", line 36, in pyarrow.lib._sequence_to_array > File "error.pxi", line 77, in pyarrow.lib.check_status > pyarrow.lib.ArrowInvalid: Rescaling decimal value -100.00 from > original scale of 6 to new scale of 12 would cause data loss > >>> pa.__version__ > '0.9.0' > {code} > not only is the error spurious, the decimal value has been multiplied by one > million (i.e. 10 ** 6 and 6 is the difference in scales, but this is still > pretty strange to me). -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARROW-2387) negative decimal values get spurious rescaling error
[ https://issues.apache.org/jira/browse/ARROW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16424638#comment-16424638 ] Phillip Cloud commented on ARROW-2387: -- Thanks for the report. > negative decimal values get spurious rescaling error > > > Key: ARROW-2387 > URL: https://issues.apache.org/jira/browse/ARROW-2387 > Project: Apache Arrow > Issue Type: Bug >Affects Versions: 0.9.0 >Reporter: ben w >Assignee: Phillip Cloud >Priority: Major > > {code:java} > $ python > Python 2.7.12 (default, Nov 20 2017, 18:23:56) > [GCC 5.4.0 20160609] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import pyarrow as pa, decimal > >>> one = decimal.Decimal('1.00') > >>> neg_one = decimal.Decimal('-1.00') > >>> pa.array([one], pa.decimal128(24, 12)) > > [ > Decimal('1.') > ] > >>> pa.array([neg_one], pa.decimal128(24, 12)) > Traceback (most recent call last): > File "", line 1, in > File "array.pxi", line 181, in pyarrow.lib.array > File "array.pxi", line 36, in pyarrow.lib._sequence_to_array > File "error.pxi", line 77, in pyarrow.lib.check_status > pyarrow.lib.ArrowInvalid: Rescaling decimal value -100.00 from > original scale of 6 to new scale of 12 would cause data loss > >>> pa.__version__ > '0.9.0' > {code} > not only is the error spurious, the decimal value has been multiplied by one > million (i.e. 10 ** 6 and 6 is the difference in scales, but this is still > pretty strange to me). -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Commented] (ARROW-2387) negative decimal values get spurious rescaling error
[ https://issues.apache.org/jira/browse/ARROW-2387?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16424637#comment-16424637 ] ben w commented on ARROW-2387: -- the issue would appear to come up here [https://github.com/apache/arrow/blob/master/cpp/src/arrow/util/decimal.cc#L833-L834]: {code:java} static bool RescaleWouldCauseDataLoss(const Decimal128& value, int32_t delta_scale, int32_t abs_delta_scale, Decimal128* result) { Decimal128 multiplier(ScaleMultipliers[abs_delta_scale]); if (delta_scale < 0) { DCHECK_NE(multiplier, 0); Decimal128 remainder; Status status = value.Divide(multiplier, result, ); DCHECK(status.ok()) << status.message(); return remainder != 0; } *result = value * multiplier; return *result < value; // indeed, -1 * 100 is less than -1 } {code} > negative decimal values get spurious rescaling error > > > Key: ARROW-2387 > URL: https://issues.apache.org/jira/browse/ARROW-2387 > Project: Apache Arrow > Issue Type: Bug >Affects Versions: 0.9.0 >Reporter: ben w >Assignee: Phillip Cloud >Priority: Major > > {code:java} > $ python > Python 2.7.12 (default, Nov 20 2017, 18:23:56) > [GCC 5.4.0 20160609] on linux2 > Type "help", "copyright", "credits" or "license" for more information. > >>> import pyarrow as pa, decimal > >>> one = decimal.Decimal('1.00') > >>> neg_one = decimal.Decimal('-1.00') > >>> pa.array([one], pa.decimal128(24, 12)) > > [ > Decimal('1.') > ] > >>> pa.array([neg_one], pa.decimal128(24, 12)) > Traceback (most recent call last): > File "", line 1, in > File "array.pxi", line 181, in pyarrow.lib.array > File "array.pxi", line 36, in pyarrow.lib._sequence_to_array > File "error.pxi", line 77, in pyarrow.lib.check_status > pyarrow.lib.ArrowInvalid: Rescaling decimal value -100.00 from > original scale of 6 to new scale of 12 would cause data loss > >>> pa.__version__ > '0.9.0' > {code} > not only is the error spurious, the decimal value has been multiplied by one > million (i.e. 10 ** 6 and 6 is the difference in scales, but this is still > pretty strange to me). -- This message was sent by Atlassian JIRA (v7.6.3#76005)