Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion c_glib/test/test-decimal128-data-type.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def test_deciaml_data_type_new

def test_invalid_precision
message =
"[decimal128-data-type][new]: Invalid: Decimal precision out of range: 39"
"[decimal128-data-type][new]: Invalid: Decimal precision out of range [1, 38]: 39"
assert_raise(Arrow::Error::Invalid.new(message)) do
Arrow::Decimal128DataType.new(39, 1)
end
Expand Down
2 changes: 1 addition & 1 deletion c_glib/test/test-decimal256-data-type.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ def test_deciaml_data_type_new

def test_invalid_precision
message =
"[decimal256-data-type][new]: Invalid: Decimal precision out of range: 77"
"[decimal256-data-type][new]: Invalid: Decimal precision out of range [1, 76]: 77"
assert_raise(Arrow::Error::Invalid.new(message)) do
Arrow::Decimal256DataType.new(77, 1)
end
Expand Down
6 changes: 4 additions & 2 deletions cpp/src/arrow/type.cc
Original file line number Diff line number Diff line change
Expand Up @@ -831,7 +831,8 @@ Decimal128Type::Decimal128Type(int32_t precision, int32_t scale)

Result<std::shared_ptr<DataType>> Decimal128Type::Make(int32_t precision, int32_t scale) {
if (precision < kMinPrecision || precision > kMaxPrecision) {
return Status::Invalid("Decimal precision out of range: ", precision);
return Status::Invalid("Decimal precision out of range [", int32_t(kMinPrecision),
", ", int32_t(kMaxPrecision), "]: ", precision);
}
return std::make_shared<Decimal128Type>(precision, scale);
}
Expand All @@ -847,7 +848,8 @@ Decimal256Type::Decimal256Type(int32_t precision, int32_t scale)

Result<std::shared_ptr<DataType>> Decimal256Type::Make(int32_t precision, int32_t scale) {
if (precision < kMinPrecision || precision > kMaxPrecision) {
return Status::Invalid("Decimal precision out of range: ", precision);
return Status::Invalid("Decimal precision out of range [", int32_t(kMinPrecision),
", ", int32_t(kMaxPrecision), "]: ", precision);
}
return std::make_shared<Decimal256Type>(precision, scale);
}
Expand Down
4 changes: 2 additions & 2 deletions r/tests/testthat/test-data-type.R
Original file line number Diff line number Diff line change
Expand Up @@ -390,8 +390,8 @@ test_that("decimal type and validation", {
expect_error(decimal(4))
expect_error(decimal(4, "two"), '"scale" must be an integer')
expect_error(decimal(NA, 2), '"precision" must be an integer')
expect_error(decimal(0, 2), "Invalid: Decimal precision out of range: 0")
expect_error(decimal(100, 2), "Invalid: Decimal precision out of range: 100")
expect_error(decimal(0, 2), "Invalid: Decimal precision out of range [1, 38]: 0", fixed = TRUE)
expect_error(decimal(100, 2), "Invalid: Decimal precision out of range [1, 38]: 100", fixed = TRUE)
expect_error(decimal(4, NA), '"scale" must be an integer')

expect_r6_class(decimal(4, 2), "Decimal128Type")
Expand Down